php - restful形式的路由的命名重复怎么办?
黄舟
黄舟 2017-06-20 10:07:20
0
3
882

比如这个路由
GET /users/{id}/comments
现在说用户的页面上有一个留言板,打算使用一个comment组件
用户在一些帖子中发布的回复,使用的也是这个comment组件
数据库设计的时候这两个comment组件使用的是同一个数据表(多态关联)(这点倒是不必担心)
重点就是说,这个路由就含义冲突了:
显示的是用户留言板(别人发的)呢
还是显示用户在帖子中的回复呢

所以说,如何解决这个问题,以restful的形式,区分开这两个路由

抱歉,我是个处女座、、、(但是说也想找到这个问题的最佳解决方式)

其实说,这个问题还有另外一个场景,就是说如何区分follow的我关注的和关注我的。
GET /users/{id}/follows
这条路由是显示我关注的呢还是关注我的呢

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(3)
为情所困

对于你的第一个场景,我觉得在数据表里肯定会有一个字段标识出事用户留言板的还是用户帖子中的,这个字段我暂称为type,所以可以写成GET /users/{id}/comments/{type}

另一个场景,可以用参数type指定是我关注的还是关注我的,可以写作GET /users/{id}/follows/{type}
当然还有另外一种方法,把我关注的和关注我的分开

GET /users/{id}/follows -> 我关注的
GET /users/{id}/followers -> 关注我的
学习ing

给用户留言和给帖子留言是操作 2 个不同的资源,资源用 URI 来定位,不同的资源使用不同的 URI,你使用相同的 URI 来操作不同的资源,这是不对的。

给我你的怀抱

用户页面的留言板你可以使用message嘛
followers是关注我的
following是我关注的
多给几个英文单词不就行了。

我看题主还不太像改名。其实吧,改名 第一个原因是它能从根本上解决问题;第二个原因是,方便后续维护者,使用容易混淆的名字迟早是会出问题。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板