【问题标题】:Can't get Koa-Router Route to Match无法让 Koa-Router 路由匹配
【发布时间】:2015-10-15 22:08:02
【问题描述】:

我无法匹配:

/people/locationId:12345

注意,是的,冒号位于右侧,而不是您在 koa-router 文档中看到的左侧。如果它在左侧,那是一个允许任何东西进入的命名参数。我尝试将它放在右侧的原因是因为我喜欢允许我的调用者在 uri 本身中指定过滤条件的约定。这是我见过的各种 API 中使用的约定。

这是我的尝试,我的路线定义,不知道还能尝试什么,这些创建路线的尝试都不适合我:

/people/([a-z-]+)locationId:?
/people/locationId([a-z-]+):?
/people/locationId:?
/people/:locationId:?

它确实符合这一点,但只是因为这条路线的方式是,它是一个可以获取任何价值的所有东西。

'/people/:locationId?': { to: 'person#find' }

我不能使用它,尤其是当我定义了其他路线时,例如:

'/people/:id': { to: 'person#findById' }

因为它会撞到这条路线,这不是正确的路线。

【问题讨论】:

  • 但是为什么要使用冒号来分隔过滤条件呢? /people/locationId/12345 怎么样?那真的很容易匹配。

标签: node.js routes koa


【解决方案1】:

/people/locationId::id
匹配
/people/locationId:12345

this.params.id 然后是 '12345'

如果 locationId 也应该是可变的,

/people/:name::id
匹配
/people/locationId:12345

这里 this.params.id 是 '12345' 而 this.params.name 是 'locationId'

【讨论】:

    猜你喜欢
    • 2021-06-29
    • 1970-01-01
    • 2016-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多