Node.js 使用与其他API端点冲突的用户创建的自定义路径设计express API
在my express应用程序中,用户可以创建一个配置文件,并在此过程中选择一个“CustomUrl”,用于为其配置文件生成url(示例:)。还可以查看配置文件,其端点可能如下所示:Node.js 使用与其他API端点冲突的用户创建的自定义路径设计express API,node.js,api,reactjs,express,Node.js,Api,Reactjs,Express,在my express应用程序中,用户可以创建一个配置文件,并在此过程中选择一个“CustomUrl”,用于为其配置文件生成url(示例:)。还可以查看配置文件,其端点可能如下所示: router.get('/reviews', ...) and router.post('/reviews/new',...) 用于获取配置文件的API端点如下所示: router.get('/:customUrl',...) 虽然我不认为用户会选择像“reviews”这样的自定义URL,但这是可能的,因此,获
router.get('/reviews', ...) and router.post('/reviews/new',...)
用于获取配置文件的API端点如下所示:
router.get('/:customUrl',...)
虽然我不认为用户会选择像“reviews”这样的自定义URL,但这是可能的,因此,获取其配置文件的API端点将被获取“/reviews”的路由截获
我有一些想法,但我通常是新的表达方式,不确定一种方式是否比另一种好。以下是其中一些:
1) 我可以将任何具有自定义URL路径的端点置于其他端点之上。这听起来不可接受,因为customUrl路径将拦截任何用于“/reviews”等的请求
2) 我可以验证customUrl,它不仅是唯一的,而且不是现有的端点。这似乎并不令人满意,因为它的伸缩性不好(每次添加新的端点时都必须更新黑名单)。如果一个用户选择了一个customUrl,我以后想用它作为另一个端点,这也会有问题
3) 将审查从概要文件中分离出来并纳入其自己的路线。这可能是最好的解决方案,尽管这会带来我希望避免的大量工作(在“/profiles”下还有其他子路由名称)
4) 将router.get(“/reviews”…)放在customUrl上方,但如果没有req.query(“?sortBy=dateCreate”等),则调用next()
5) 我之前没有提到这一点,因为我觉得我只是在隐藏问题,而不是解决问题,但是我的客户端在一个单独的端口上,因此我可以将路由器配置为将url显示为.com/profile/:customUrl,但将API端点改为:router.get(“/”,…)使用“?customUrl=…”之类的查询字符串。然后url将是“www.myApp.com/profile/:customUrl
”,但get请求将是“api.myApp.com/profile/?customUrl=:customUrl
”,而获取审核请求将是“api.myApp.com/profile/reviews
”(或类似的内容)
不管怎样,我有一种感觉,我错过了一些基本的东西。任何帮助都会很好 您可能只需要对路由命名保持RESTful,例如:
- 获取配置文件:
router.get('/profile/:customUrl',…)
- 获取个人资料的评论
router.get('/profile/:customUrl/reviews',…)
- 发布新评论(请注意,您不需要写上“new”字样的路线,因为这可以通过发布请求来确定)
router.post('/profile/:customUrl/reviews',…)
如果你真的很安静,你应该使用下列动词,原因如下:
- 获取记录
- 添加后记录
- 放置-编辑记录
- 修补程序-执行部分编辑(例如,不发送整个文档)
- 删除-删除记录