在RESTful Web服务中使用GET,PUT和DELETE HTTP方法

时间:2014-01-13 15:15:08

标签: java spring web-services rest jax-rs

我正在开发Ticket Reservation应用程序。我需要构建一个Web服务,它接受取消请求,检查下游系统(通过SOAP),是否可以取消,并在更新我的表后将相应的响应返回给调用系统。

我必须构建一系列类似的网络服务,用于取消,重新安排等,我计划使用RESTful网络服务

我打算使用JAX-RS实现REST API的POST方法。我可以看到我要构建的所有Web服务都适合POST动词,其他HTTP方法(GET,POST和DELETE)似乎不需要在这里使用。在这种情况下,REST中这些HTTP方法的实际用例是什么?我是否正确使用POST?

4 个答案:

答案 0 :(得分:3)

您的REST资源是故障单。使用GET读取票证,PUT修改票证状态,使用DELETE进行逻辑删除(取消)。

对于任何其他操作,请使用通配符操作POST。

查看此博文Brief Introduction to REST,其中作者介绍了核心REST原则。

答案 1 :(得分:2)

为了取消,我实际上会使用DELETE方法。在成功取消的情况下,返回200,其中任一响应机构确认成功,或返回包含预订详细信息的响应机构。如果你不想归还身体,可以选择204。

如果无法取消,您可以从400系列错误中选择(例如404,如果没有这样的预订,403,如果请求被禁止等)或500系列如果有错误或故障。

您肯定会将其他HTTP动词用于所有其他预订操作 - 进行预订,更改等等。

答案 2 :(得分:0)

将您的故障单预订视为您的应用资源。 您的申请的客户将:

  • 提交GET请求以检索表示(XML,JSON或其他任何内容)一个或多个故障单保留(给定他们使用的URL,例如:/tickets以检索所有这些 - 或者所有这些允许查看/tickets/1以检索其ID为1tickets/?start=0&size=10的分页内容等的故障单预订的表示。)
  • POST上提交/tickets次请求以创建新的预订(并且响应会向客户提供location,以提供已创建预订的位置)
  • PUT提交/tickets/1请求(在请求正文中代表新的预订),以更新由1
  • 标识的预订
  • DELETE提交/tickets/1个请求,以删除1
  • 标识的预订

使用此类动词背后的主要思想是URL应标识资源(而不是动作),HTTP动词将是动作。

如果您使用POST的所有内容,那么您或多或少会使用SOAP。

本文将为您提供有关我尝试过以上的帽子的更多信息:http://martinfowler.com/articles/richardsonMaturityModel.html

答案 3 :(得分:0)

关于设计RESTful应用程序有很多话要说。你真的应该阅读这些书中的一本或多篇:“Restful Web Services” - http://amzn.com/0596529260,“RESTful Web API” - http://amzn.com/B00F5BS966,“REST in Practice:超媒体和系统架构” - {{3}或“RESTful Web Services Cookbook” - http://amzn.com/B0046RERXY

喝杯咖啡,享受一些阅读: - )