我知道一些name conversions of REST API,例如资源名称应该是复数,使用具有相同URI的不同HTTP方法对该资源执行不同的操作等。
但由于 URI应反映资源关系,我有点困惑。以SO为例,当更新答案的现有注释时,URI应如下所示:
PUT /{contextPath}/questions/{questionId}/answers/{answerId}/comments/{commentId}
但是在使用此so-called standard
URI时我感到很尴尬,因为:
那么处理这个问题的适当方法是什么?我应该始终遵循名称转换,还是在资源的关系层次非常深时进行一些更改?
答案 0 :(得分:2)
我强调不同意" URI应该反映资源的关系"。
URI是指向资源的指针。就是这样。有些惯例使它们具有人类可读性,因此更易于使用。当然没有硬性规则可以在URI路径上建模关系。您可以随意以平面而非分层的方式对资源进行建模。使用link
来建模资源之间的关系,并使用查询参数来缩小集合范围。
答案 1 :(得分:1)
它为您提供了更多选项,而无需提出额外请求。
因此允许您调用可能需要说出questionId的函数。 当您只有commentId时,您必须首先查询您的questionId。
取决于您的功能需求。如果您在上一页上有特定信息并且必须在下一页中再次使用它,为什么要查询两次?除非敏感哪个问题显然不是。
这就我应该如何看待你的标准
的添加意见而言答案 2 :(得分:1)
我会将路由/ URI简化为:
PUT /comments/{commentId}
以及相应的RequestBody,也许是某种DTO。 URI不必从上下文路径一直显示层次结构。它可以是唯一标识资源的最短URI