首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Restfull设计

Restfull设计
EN

Stack Overflow用户
提问于 2020-06-25 11:51:37
回答 1查看 36关注 0票数 1

我目前在设计api时面临以下情况,我很好奇什么是最好的选择。我们的路线有多个层次,例如:

代码语言:javascript
复制
GET group/:id  
GET group/type/

这里的问题发生在某人在例如group/type上执行GET请求时,../type被作为id来处理。如果考虑到GET on组/仅指单个组,这确实是有意义的。然后,类型的正确路由将是组/:id/ type。

但是,一个组可以有多个类型,我们需要一个简单地查询所有组类型的路径。实现这一点的restful方式是什么?应该做一个获取/grouptypes路由或者一些讨厌的正则表达式来测试/group/gibberish是子路由还是 id?我不想要一些实现解决方案的讨厌的方法,我只是问如果我们设计一个restful,什么是最好的设计选择。

我将此标记为Express.js问题,因为我们确实在快递中实现了这个api。不过,我认为上述行为正是在这类架构下的路由机制所期望的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-25 11:58:05

我假设您的路由代码类似于这个示例,或者非常类似于:

代码语言:javascript
复制
...

router.get('/group/:id', middleware, controller, ...);
router.get('/group/type', middleware, controller, ...);

...

所以你唯一需要做的就是互相交换这些行:

代码语言:javascript
复制
...

router.get('/group/type', middleware, controller, ...);
router.get('/group/:id', middleware, controller, ...);

...

原因是速递公司在注册路线之间使用第一条匹配路线。考虑到这个事实,我们很容易理解,因为对/group/type路由的请求匹配这两个方案-第一个注册将被使用。

从REST的角度来看,,拥有/group/:id来获取特定组的信息是完全好的。另外,有一些特定的路由,比如/group/total/group/stats,或者其他什么来获取与所有组相关的一般数据也是完全可以的。我不知道您的/group/type路由的实际功能是什么,但是如果它是用于获取所有组类型的统计数据的端点,那就好了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62574670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档