我被要求建立一个新的Web服务,应该可以使用任何语言(php,.NET,Java等)轻松使用。当然滚动我自己可以完成,接受不同的内容类型(xml / x-www-form-urlencoded(普通帖子)/ json /等),但是现有的方法或机制当然是首选,减少时间花在开发服务的消费者身上。
Web服务确实接受修改/集合(它不仅仅是数据检索),但那些很可能会比得到的少得多(我们估计大约2.5%的集合,97.5得到)。这里的术语webservice表示协议应该通过HTTP,不能完全实现客户端(最终用户浏览器中的javascript等),因为它需要特定的用户身份验证。
参数计数(通常为1到4)的获取和设置都很清楚。像REST这样的方法(我只想获得),XML-RPC& SOAP(可能有点矫枉过正,但具有明确定义的方法和返回的优点)是常见的嫌疑。
您认为/经验中最广泛使用的“口语”和最容易实现的协议(从消费者的角度来看)可以满足这种需求吗?
答案 0 :(得分:3)
您可以用几乎任何语言为RESTful Web服务编写消费者,因为它只需要一个HTTP库,尽管大多数主流语言的库都可以帮助处理内容类型协商等问题。这些库对于服务器来说也是一个巨大的胜利,顺便说一句。
根据定义,真正的 RESTful API是可发现的:超文本作为应用程序状态引擎(HATEOAS)是REST的定义特征之一。公平地说,这在现实世界中通常被忽略,主要是因为它太过分了。像AtomPub或Sun的云服务器管理API之类的东西可能是真正RESTful服务的一个很好的例子。
无论采用哪种方法,您都应该自己编写清晰的文档,而不是依赖自动生成的文档。这些在需要时是有用的参考,但它们并不代替好的手写文档。
答案 1 :(得分:3)
我们对此进行了大量研究,最终选择了REST。很多精心设计的Web服务都使用REST,包括Amazon S3。我认为Gmail也会在后端使用REST。
根据我的观察,RESTful Web服务设计似乎变得越来越突出,因为其设计的优势和其他设计(如SOAP)的缺点在时间和经验上变得更加明显。
REST似乎运行良好的原因在于它自然适合Web的客户端 - 服务器性质,它将安全和幂等GET请求,幂等PUT请求和POST的分离既不安全也不安全幂等。它已经存在了很长时间,所以一个适当布局的RESTful Web服务可以被各种Web客户端使用,有些甚至可能没有预料到。例如,网络爬虫只知道使用GET请求资源,因为它保证不会影响资源,而PUT和POST请求有不同的规则。
在我们决定使用RESTful服务架构之后,我读了这本书:RESTful Web Services以便学习基础知识。如果您决定阅读它,请知道该书可能是它需要的两倍,因此您必须明智地阅读要阅读的内容和要跳过的内容 - 因为您要跳过这一点。
答案 2 :(得分:0)
SOAP服务具有可被发现的优点。在.NET(以及我假设的其他语言)中,您可以简单地创建一个新的Web服务类(ASP.NET中的.ASMX),并将任何方法添加到您需要的接口中。该框架将为您生成可通过HTTP检索的WSDL。 WSDL包含调用应用程序使用的类定义,为每个方法提供正确的参数名称和类型。等
REST或其他通常不可发现的服务的缺点是您必须手动维护该接口的文档。在没有WSDL内部信息和执行WSDL的情况下调试与客户端的通信问题可能更加困难。