2011-12-28 86 views
1

我是REST风格的Web服务的新手。我有以下2个问题:有关REST风格的Web服务的2个问题

  1. 有GET,POST,DELETE,PUT,TRACE,HEAD,OPTIONS,在HTTP中,我可以使用RESTful Web服务的唯一的动词?

  2. 如何创建和使用自定义动词?

我正在使用Java和Jersey创建我的REST风格的Web服务。

+0

除GET,POST,PUT和DELETE之外,您还需要什么动词?请解释。 – 2011-12-28 19:56:42

+1

通过创建自定义动词超出HTTP规范将使您的服务不符合HTTP规范,这可能会导致未解决的问题(例如互操作性)。此外,大多数开发人员永远不会超越GET和POST,所以了解为什么你认为你需要新的东西会很有趣 – tomfumb 2011-12-28 20:02:30

+0

说实话,我是新来的Web服务。所以,我可能对此有很多误解。但是,假设我想提供10种不同的操作。那我该如何提供10个动作,只有7个动词?每个动作都不是单独使用动词吗?或者我错了,可以使用条件在单个动词下提供几个动作? 总的来说,其他人如何设计他们的应用程序,使他们不需要额外的动词,即使他们需要提供100种不同的动作? – 2011-12-28 20:22:29

回答

3

问题1的答案是,是的,因为它们受HTTP规范的限制。然而,根据惯例,大多数REST应用程序仅使用GET和POST,因为这些应用程序得到了所有Internet基础架构的最广泛支持。然后问题二的答案是否定的,你不能创建一个自定义的动词。

您在使用HTTP动词时必须考虑的事情是GET应该没有副作用,因为客户端随时可以重新发送GET(在检测到通信故障的情况下)。然而,POST最多可以由客户端发送一次,所以这应该用于导致不能重复更改的任何内容(如插入)。

通常情况下,您应该在应用程序中将您想要的“动词”定义为URL的一部分,而不是HTTP动词。

+0

谢谢弗朗西斯。这就说得通了。 – 2011-12-28 20:59:41

+0

如果你喜欢它,请[接受](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work):) – 2011-12-28 21:01:30

+1

我可以认为没有理由让你“添加“一个动词。至少你会让你的客户使用许多框架来进行web服务调用,因为这些框架是围绕标准的HTTP动词构建的。如果你有时间并且想要真正了解HTTP可以为你做什么,我强烈推荐阅读Jim Webber,Savas Parastatidis和Ian Robinson的“REST in Practice:Hypermedia and Systems Architecture”。在完成本书之前,我并不真正了解HTTP。 – 2011-12-28 22:03:23

0

那我该如何提供10个动作只有7个动词?

Web服务背后的想法是关注对象,而不是动词。

您的操作是“创建”(“POST”),“检索”(“GET”),“更新”(“PUT”)或“删除”(“删除”)。

不是每个动作都根据单独的动词吗?

不可以。您可以拥有所有需要的物件。你只需要四个动词来创建,查找,更改和删除对象。

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

不可以。您可以创建一个create(“POST”)请求,该请求又可以创建多个单独的对象。

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

您专注于对象。对象被创建,检索,更新和删除。