首页  >  问答  >  正文

php - restful形式的路由的命名重复怎么办?

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

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

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

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

黄舟黄舟2702 天前872

全部回复(3)我来回复

  • 为情所困

    为情所困2017-06-20 10:09:20

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

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

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

    回复
    0
  • 学习ing

    学习ing2017-06-20 10:09:20

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

    回复
    0
  • 给我你的怀抱

    给我你的怀抱2017-06-20 10:09:20

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

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

    回复
    0
  • 取消回复