我有两个端点:
按ID获取所有用户
http.get(API_URL + "users/" + id)
按用户名获取所有用户
http.get(API_URL + "users/" + username)
我可以在同一路线上发送不同的参数:
router.get("/users/:id", async ctx => {
//ctx.request.param is id
//do something
});
router.get("/users/:username", async ctx => {
//ctx.request.param is username
//do something
});
感谢您的帮助!
答案 0 :(得分:2)
在您的示例中,您提供的是URL参数,而不是(命名的)查询参数,因此它只是URL的一部分,所以无论如何这只是一个字符串"。
这意味着,koa路由器将知道数据类型(例如integer
的{{1}}和:id
的{{1}}。这是 - 据我所知 - 并非如此。
当你有
时string
或
:name
你只需给URL字符串的这一部分命名 - 仅此而已。 (ctx.params.id OR ctx.params.username)
所以你需要实现一个逻辑,你可以确定参数是否是一个整数(并且句柄是一个ID)(在这种情况下你将它作为用户名处理)。
这可能是这样的:
"/users/:id"
希望有意义......否则,你真的必须创建两个带有distingiashable签名的路由
答案 1 :(得分:0)
简短的回答是否定的。
我认为好的解决方案可能是,您的路线设置如下
GET /users?<your query here>
然后您可以使用<your query>.id
或查询&gt; .username