REST URI - 最佳方法

REST URI - Best approach

get /cars -> Get all cars
get /cars/1 -> Get car with id 1
post /cars -> Create car
post /cars/1/bookmark -> The authenticated user bookmarks the car with id 1

为了让经过身份验证的用户获得他收藏的汽车,我们可以:

get /cars/bookmarked

get /users/me/cars/bookmarked

首选哪个?

没有"preferred"标准,这个问题与Rest无关。 Rest 与如何构建 URI 无关。 Rest 是一种架构风格,其核心是超媒体作为应用程序状态的引擎。在真正的 Rest 中,客户端不知道除了单个入口点 URI 之外的任何 URI。

话虽如此,在我发现我上面刚刚解释的内容之后,并且在想知道我的 API 的完美 URI 结构是什么之后,我也意识到最好不要假设那里是 API 的 "preferred" URI 结构。当然,某些结构有利有弊,但总的来说,你会从不同的人那里得到不同的反应。几乎没有人同意基于 HTTP 的 API 的 "preferred" URI 结构。我说只要选择一个你喜欢的 URI 结构然后继续。

获取/汽车

常被称为"collection"。这应该 return 消费者可以看到的所有汽车。通常包含查询参数以操纵响应,例如 GET /cars?type=sports&color=red

当你有一个 "collection" 时,它是一个自然的扩展,也提供一个特定的 "document"(或集合的成员)

GET /cars/{id}

这通常不会有查询参数来操纵响应,因为请求是针对特定且已知的 document/resource。

为了创建新资源,您可以使用 post

POST/汽车

您应该会收到一个 http 代码 201

为了更新现有资源,通常您会使用 PUT,但有一种趋势是使用 POST 进行更新和创建 http://www.thoughtworks.com/radar/techniques

要尝试解决您的问题,我认为您要么需要将书签视为自己的资源,并允许用户 POST/PUT 使用 links/references 访问书签资源,要么包含一个书签汽车资源的方面,并允许用户 POST/PUT 使用它。