用于在单个请求中执行所有CRUD操作的HTTP方法

时间:2014-06-18 04:24:27

标签: spring web-services http rest

我正在开发一个Spring REST Web服务。我只是阅读了所有HTTP方法的用法。

  • POST创建新资源。
  • GET检索资源。
  • PUT更新现有资源。
  • DELETE删除资源。

我有一个Web服务方法,可以执行所有CRUD操作。在这种情况下哪种HTTP方法最好?

2 个答案:

答案 0 :(得分:2)

这不是REST应该工作的方式。您应该使用多个请求来执行多项操作。除非你真的需要类似交易的行为,否则只需要在多个请求中执行,它确实不应该是一个问题。

也就是说,您可以使用您想要进行的更改来修补根资源(如果您真的想要这样做。例如:

PATCH /data_objects/

[ { "action":"add",
    "data":<data_for_new_object>
  },
  { "action":"update",
    "data":{
      "id":666,
      "updates":[
        { "key":"age","value":50 },
        { "key":"color","value":"blue"}
      ]
     }
  },
  { "action":"delete",
    "data":{
      "id":69
    }
  }
]

这只是表示您在请求中用于修改根资源的所有更改的一种可能方式(可能不是那么好)。

答案 1 :(得分:1)

不要导出单个方法来执行所有CRUD操作。

为每个CRUD声明4个新方法。每种方法都调用原始的Web服务方法。

分离可以带来额外的利润,例如缓存GET响应并且不会缓存POST / PUT / DELETE。