router不传参数为何404?

注册了一个路由

router.get('/user/:id', user.find);

我想设计的是传入id一个操作,不传id参数另一个操作
但是不传id参数直接就404了,我只能再注册一个

router.get('/user/', user.find);

感觉这用法很奇怪

用的是koa-router模块

阅读 3.7k
1 个回答

你这么写参数叫做path variable,是路由其中的必填部分,如果想做可选参数,应该用query parameter(即:?传參)

修正:

之前没看过这个koa-router,我是按照标准的http访问逻辑来建议的,但刚才看了下文档,发现这个东西不是一般的变态(简直莫名奇妙),于是我上面的建议就不能用了。

得这样:

router.get('/user/:id?', user.find);

然后客户端访问时,就可以不填id,直接/user/这样访问了,看文档:

图片描述

没用过koa,不知道这算哪门子逻辑,我不服

补充:

关于路由规范,在文档的:

图片描述

是由另一个库path-to-regexp来处理的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题