【问题标题】:RESTful web service, how to lay down the pathsRESTful Web 服务,如何铺设路径
【发布时间】:2012-11-13 07:37:02
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

标签: java web-services jakarta-ee jax-rs


【解决方案1】:

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

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

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

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

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

  • /测验/问题/1
  • /questions/1
  • /questions/1/feedback

但不是:

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

【讨论】:

    猜你喜欢
    • 2023-03-08
    • 2012-06-27
    • 2015-03-09
    • 2011-03-19
    • 2011-06-16
    • 2013-05-14
    • 2013-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多