我正在开发Ticket Reservation应用程序。我需要构建一个Web服务,它接受取消请求,检查下游系统(通过SOAP),是否可以取消,并在更新我的表后将相应的响应返回给调用系统。
我必须构建一系列类似的网络服务,用于取消,重新安排等,我计划使用RESTful网络服务
我打算使用JAX-RS实现REST API的POST方法。我可以看到我要构建的所有Web服务都适合POST动词,其他HTTP方法(GET,POST和DELETE)似乎不需要在这里使用。在这种情况下,REST中这些HTTP方法的实际用例是什么?我是否正确使用POST?
答案 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为1
,tickets/?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。
喝杯咖啡,享受一些阅读: - )