node.js - 如何处理末尾带有可选 's' 字符的路由

标签 node.js express routes

在我的后端 REST API 中,我有处理产品的路线

[GET] /products
[GET] /product/:id
[POST] /product/:id

我想在 1 个路由器中处理它们(因为所有这些路径都适用于产品),但问题是我不知道如何区分 /products/product。我尝试使用像 /product+[s]? 这样的正则表达式,但随后 /products/:id 也变成了有效的路径,它应该是无效的。

如何在同一个路由器中处理 /products/product/:id

最佳答案

特定产品的正确 REST API 结构是 plural/{id},因此在您的情况下,理想情况下应该是 /products/:id

但是话虽如此,您可以使用正则表达式来匹配可选的s

app.all('/products?/:id?', function (req, res) {
 //will match /product/id also /products/id also /product also /products
}) 

查看 official doc了解更多信息。

关于node.js - 如何处理末尾带有可选 's' 字符的路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56901819/

相关文章:

node.js - 如何告诉 mocha 在哪里递归地找到我的测试?

node.js - 将 Mocha Chai 与 Stormpath 结合使用

node.js - Express/Node.js 错误 : Reference Error: Res is not defined

node.js - typescript + Express : Property 'rawBody' does not exist on type 'IncomingMessage'

ruby-on-rails - Rails link_to 在按钮元素中不起作用

routes - 如何获取 Sinatra 应用程序中使用的所有路线的列表?

javascript - Node.js Express - 将路由处理为 app.get ('route' ,folder.file)

javascript - 使用 jQuery 和 Node 在 DOM 上填充数据的最佳方式

python - 如何在谷歌应用程序引擎中的同一域中同时部署python和node js?

routes - SAPUI5 路由 - 无法找到 ID 为 idAppControl 的控件