RESTful Web服务,如何铺设路径

时间:2012-11-13 07:37:03

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

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

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

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

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

但是这条路径是否也可以通过测验获得?对此有任何规定,还是由开发人员决定(当然是......,但通常是这样)?

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

1 个答案:

答案 0 :(得分:4)

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

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

           Composition       Aggregation
POST          create           associate
GET            read               read
PUT           update           reassociate
DELETE        delete           disassociate

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

如果我们编写Quiz API,我们就会

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

但不是:

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