restful形式的路由的命名重复怎么办?
比如这个路由
GET /users/{id}/comments
现在说用户的页面上有一个留言板,打算使用一个comment组件
用户在一些帖子中发布的回复,使用的也是这个comment组件
数据库设计的时候这两个comment组件使用的是同一个数据表(多态关联)(这点倒是不必担心)
重点就是说,这个路由就含义冲突了:
显示的是用户留言板(别人发的)呢
还是显示用户在帖子中的回复呢
所以说,如何解决这个问题,以restful的形式,区分开这两个路由
抱歉,我是个处女座、、、(但是说也想找到这个问题的最佳解决方式)
其实说,这个问题还有另外一个场景,就是说如何区分follow的我关注的和关注我的。
GET /users/{id}/follows
这条路由是显示我关注的呢还是关注我的呢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
对于你的第一个场景,我觉得在数据表里肯定会有一个字段标识出事用户留言板的还是用户帖子中的,这个字段我暂称为
type
,所以可以写成GET /users/{id}/comments/{type}
另一个场景,可以用参数
type
指定是我关注的还是关注我的,可以写作GET /users/{id}/follows/{type}
当然还有另外一种方法,把我关注的和关注我的分开
用户页面的留言板你可以使用message嘛
followers是关注我的
following是我关注的
多给几个英文单词不就行了。
我看题主还不太像改名。其实吧,改名 第一个原因是它能从根本上解决问题;第二个原因是,方便后续维护者,使用容易混淆的名字迟早是会出问题。
给用户留言和给帖子留言是操作 2 个不同的资源,资源用 URI 来定位,不同的资源使用不同的 URI,你使用相同的 URI 来操作不同的资源,这是不对的。