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