Java 关于RESTful Web服务的2个问题

Java 关于RESTful Web服务的2个问题,java,rest,service,web,Java,Rest,Service,Web,我不熟悉RESTful web服务。我有以下两个问题: GET、POST、DELETE、PUT、TRACE、HEAD、OPTIONS是Http中唯一可以用于RESTful web服务的动词吗 如何创建和使用自定义动词 我正在使用Java和Jersey创建RESTful web服务。问题1的答案是肯定的,因为它们受到HTTP规范的限制。然而,实际上,大多数REST应用程序只使用GET和POST,因为它们受到所有互联网基础设施的最广泛支持。第二个问题的答案是否定的,你不能创建一个自定义动词 您在使用

我不熟悉RESTful web服务。我有以下两个问题:

  • GET、POST、DELETE、PUT、TRACE、HEAD、OPTIONS是Http中唯一可以用于RESTful web服务的动词吗

  • 如何创建和使用自定义动词


  • 我正在使用Java和Jersey创建RESTful web服务。

    问题1的答案是肯定的,因为它们受到HTTP规范的限制。然而,实际上,大多数REST应用程序只使用GET和POST,因为它们受到所有互联网基础设施的最广泛支持。第二个问题的答案是否定的,你不能创建一个自定义动词

    您在使用HTTP谓词时必须考虑的是,GET不应该有副作用,因为客户端可以随时重新发送get(如果检测到通信失败)。但是,客户机最多只能发送一次POST,因此这应该用于任何导致无法重复更改的内容(如插入)

    通常,您会将应用程序中需要的“动词”定义为URL的一部分,而不是HTTP动词

    那么,我如何只提供7个动词的10个动作呢

    web服务背后的思想是关注对象,而不是动词

    您的操作可以是“创建”(“发布”)、“检索”(“获取”)、“更新”(“放置”)或“删除”(“删除”)对象

    不是每个动作都有一个单独的动词吗

    不可以。你可以拥有你想要的所有对象。创建、查找、更改和删除对象只需要四个动词

    或者我错了,可以用条件句在一个动词下提供几个动作

    不可以。您可以发出创建(“POST”)请求,该请求可以依次创建多个单独的对象

    一般来说,其他人如何设计他们的应用程序,即使他们需要提供100个不同的动作,也不需要额外的动词


    您将重点放在对象上。创建、检索、更新和删除对象

    除了GET、POST、PUT和DELETE之外,你还需要什么动词?请解释。通过创建自定义谓词超出HTTP规范将使您的服务不符合HTTP,这可能会导致将来出现不可预见的问题(例如互操作性)。而且,大多数开发人员永远不会超越GET和POST,因此了解为什么您认为您需要一些新的东西会很有趣。老实说,我对web服务还不熟悉。所以,我可能对此有很多误解。但是假设我想提供10种不同的操作。那么,我如何只提供7个动词的10个动作呢?不是每个动作都有一个单独的动词吗?或者我错了,可以用条件句在一个动词下提供几个动作?一般来说,其他人是如何设计他们的应用程序的,这样即使他们需要提供100个不同的操作,他们也不需要额外的动词?请看我的答案,你不想使用HTTP请求方法(GET、POST等)来定义应用程序中的“动词”。可以把它们看作是较低级别的东西,比如发送和接收。您可以定义自己的HTTP方法,而无需超出HTTP规范,因此它在技术上仍然符合HTTP。尽管您的互操作性评论仍然适用。谢谢Francis。这是有道理的。如果你喜欢,请:)我想不出你为什么要“加”动词。因为这些框架是围绕标准HTTP谓词构建的,所以至少您会让您的客户机很难使用许多框架来进行Web服务调用。如果您有时间并且想真正了解HTTP能为您做什么,我强烈建议您阅读Jim Webber、Savas Parastatidis和Ian Robinson的《REST实践:超媒体和系统架构》。直到读完这本书,我才真正了解HTTP。