api - 我应该如何处理 REST 中的子资源?

标签 api rest

我了解(我认为......)REST 的基础知识,但在尝试设计我的 API 时,我对子资源有点困惑,我将尝试用一个例子来解释:

假设我有一个应用程序有两个资源,用户和房间,用户可以创建房间和加入房间,以下 REST URI 是否正确?

  1. GET/users/< userID >/joinedRooms
  2. GET/users/< userID >/createdRooms

还是应该像/users/< userId >/rooms/joined 或/users/< userId >/rooms?query=joined ?

“获得类似的房间”URI 会是什么样子?/rooms/< roomId >/similar 或/rooms/?query=similar ?

最佳答案

URL 设计是一种艺术形式,而不是 REST 约束。 REST 没有说明您的 URL 应该是什么样子。 URL 是不透明的字符串,它们的内容无关紧要。

  • /users/<userID>/joinedRooms
  • /users/<userID>/rooms/joined
  • /users/<userID>/rooms?query=joined

您建议的任何这些选项都同样有效。选择最适合您的一个,只要它代表一种资源即可。

also how would "get similar rooms" URI would look like

再说一遍,随心所欲。怎么样/yaz1-oPhce6~X_ ? :-)

在做出决定时,我建议您尝试考虑易于实现、美观等因素。

关于api - 我应该如何处理 REST 中的子资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13664701/

相关文章:

java - 如何使用 Restful Web 服务反序列化 xml 集合表示

java - Spring Boot - 返回带有对象数组的 JSON

java - 如何在当前的Rest API中实现spring Hateoas?

python - 如何使用 django rest 框架发送文件作为响应?

django - 在 Django Rest Framework 中创建或更新(使用 PUT)

api - 谷歌博客搜索 API 的替代 API

java - JAX-RS @PathParam : how to pass anything including "?"

ruby - Jekyll 扩展调用外部脚本

Java:平衡二叉搜索树

rest - Spring Boot RestClient post for object without request body 导致错误请求