2

我正在创建一个遵循 REST 样式的 Web 服务,所以我使用的是 JAX-RS。但是,问题是更一般的形式,因此技术无关紧要。

假设您的系统中有三个资源。测验、问题和问题反馈。现在假设您为 Quiz 资源创建了一个路径:/quiz

一个测验对象有一个问题列表,每个问题都有一个反馈列表。

我也有问题的路径:/questions您可以POST就问题对子资源(这是正确的术语吗?)进行反馈,所以让我们说:/question/1/feedback.

但是,这条路径是否也可以通过测验获得?对此是否有任何规则,或者这取决于开发人员(当然是..,但这是通常的)?

示例:/quiz/questions/1/feedback。我想问的是边界在哪里。您是否应该在嵌套路径中提供相同的操作,就像它们是“顶级”路径时一样?

4

1 回答 1

4

我们一直在我们的 Web 服务实现中使用组合与聚合规则。基本前提是组合资源的生命周期完全由其父资源管理。而那些聚合的仅从关联的角度进行管理

因此,给定一个父资源,我们(通常)将 HTTP 动词映射到子资源上的管理操作,如下所示:

           组合       聚合
POST 创建关联
GET 读读
PUT 更新重新关联
DELETE 删除 解除关联

对于复合 GET,我们定义了足够的端点来完全查询子资源。对于聚合的 GET,我们只返回足够的信息来定义实际的端点来进行完整的查询。

Som 如果我们编写一个 Quiz API,我们会有

  • /测验/问题/1
  • /问题/1
  • /问题/1/反馈

但不是:

  • /测验/问题/1/反馈
于 2012-11-13T08:28:57.577 回答