1

我们有 2 名开发人员在设计 RESTful API 端点的方式上存在冲突。基本上,假设我们手头有 Facebook 产品,一张用于发布帖子的表格。

第一个开发者给出的意见是

  • 我们应该按产品而不是技术存储来区分端点。为此,我们将为用户 facebook 帖子和其他 facebook 帖子设置端点。

/v1/wall/mypost

/v1/wall/other

  • 为此,我们可以配置每个可能返回不同结果的产品

第二个开发商不同意,给出意见

  • 如果是这样,它将成为无限的端点。它会有/wall/someone, /wall/sometwo.
  • 我们应该有一个端点,让它成为查询的一部分。前任。/wall?user=someone,/wall?user=sometwo

  • 端点应该看起来像技术模式,它返回相同的结果,为什么它必须分开以使其在维护代码方面有更多的工作。

设计端点的最佳实践是什么?它应该是产品的端点吗?还是应该按模式?

4

2 回答 2

0

你说的这些“端点”是什么?那是 SOAP 术语!RESTful Web 服务是根据由 URL 唯一标识的“资源”来定义的。

资源通常代表域模型中的实体(例如,用户)。实体的 ID 通常用作 URL 中的路径元素(大多数 REST 库(例如 JAX-RS)的术语中的“路径参数”)。查询参数只能用于在服务器端对结果进行排序/过滤。

您的第一个开发人员更接近正确。

于 2013-09-19T22:08:16.033 回答
0

它应该取决于服务从 API 用户的角度而不是从内部实现来管理的“资源”。

有了这个,如果服务要管理可以由“某人”,“某人”识别的资源,那么建模它的正确方法是

/墙/某人/

/墙/sometwo/

在这种情况下,'someone' 和 'sometwo' 是两个不同的资源,你可以拥有无​​限的 # 个资源;但这与内部存储或实现无关。

在后端,应该有一些 url 模式来提取 'someone' 和 'sometwo' 作为资源并将它们映射到内部实现细节。

于 2013-09-19T21:48:50.337 回答