一种方法是说您应该保持资源网址的简单性。我们在HTTP和资源名称中有动词作为路径。所以我们可以:
GET /books/12
如果我们想要获取相关的集合,我们可以这样做:
GET /books/12/pages
另一方面,有一种做法是使用所谓的资源动词,你可以在其中微调动词操作:
POST /books/12/bookmark
我不会将这两种方法用于我的API。我倾向于认为第一种方法更正确(即资源名称中不允许使用动词),并且为第二种方法建模我们可能使用不同的实体,例如:
POST /book-bookmarks/12/
或不同的id:
POST /bookmarks/12+book/
我知道这没有真正的答案,但哪一个更受欢迎?我希望看到那些实际经历过像这样的设计决策的人的答案。
答案 0 :(得分:0)
URI(或IRI)是关于识别资源的standard。这些资源可以是Web文档,真实的东西等......在目前的情况下,它们是Web文档。据我所知。关于URI结构没有标准,但URI标准和HTTP标准建议您应该以过程方式使用URI和HTTP方法。因此HTTP谓词描述了过程,URI标识了过程的对象。现在,您通常使用动词描述过程,并且通常使用名词描述对象。这就是为什么在URI结构中仅使用名词是合乎逻辑的,至少在它的(分层)路径部分中是这样。
(你通常可以使用标准的HTTP方法和专有名词来解决所有问题。只有非常特殊的事情才会导致问题。在这些情况下,我认为使用新的HTTP方法比将动词放入URI更好。但是非常罕见。例如,使用查询字符串非兼容参数进行搜索,例如文件就是这种情况。在这些情况下,另一种替代方法是在URI中使用POST和动词。)