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
首选哪一个?
答案 0 :(得分:4)
没有“首选”标准,这个问题与Rest无关。休息不是关于如何构建URI。休息是一种建筑风格,其核心是超媒体作为应用程序状态的引擎。在实际的Rest中,客户端不知道除单个入口点URI之外的任何URI。
话虽如此,在我发现上面刚刚解释过的内容之后,经过几个月的想知道我的API的完美URI结构是什么,我也能够意识到最好不要假设有一个API的“首选”URI结构。当然,某些结构有一些优点和缺点,但总的来说,你会得到不同人的不同反应。几乎没有人同意基于HTTP的API的“首选”URI结构。我说只需选择你喜欢的URI结构并继续前进。
答案 1 :(得分:0)
GET / cars
通常被称为"集合"。这应该返回消费者可见的所有汽车。通常包括查询参数以便操纵响应,例如 GET / cars?type = sports& color = red
当你有一个"集合"时,它是一个自然的扩展,也提供一个特定的"文件" (或集合的成员)
GET / cars / {id}
这通常不会有查询参数来操纵响应,因为请求是针对特定的已知文档/资源。
为了创建新资源,您可以使用post
POST / cars
你应该收到一个http代码201
为了更新现有资源,通常你会使用PUT,但有一种趋势是使用POST进行更新以及创建 http://www.thoughtworks.com/radar/techniques
试图解决您的问题,我相信您需要将书签视为自己的资源,并允许用户使用链接/引用汽车对书签资源进行POST / PUT,或者包含书签方面汽车资源,并允许用户POST / PUT到它。