比较和对比REST和SOAP Web服务?

这个问题在这里已经有了答案:

  • 具象状态传输(REST)和简单对象访问协议(SOAP)14的答案

  • SOAP使用WSDL用于消费者和提供者的通信,而REST只是使用XML或JSON来发送和接收数据

    WSDL定义了客户端和服务之间的契约,并且其性质是静态的。 如果REST协议有些复杂并且由HTTP,URI,媒体格式和应用程序特定协调协议定义。 与WSDL不同,它是高度动态的。

    SOAP不会返回人类可读的结果,而REST结果是可读的,只是普通的XML或JSON

    这不是真的。 纯XML或JSON根本不是RESTful。 只要消息必须是自包含的,并且协调代理/客户端和服务之间的交互,它们都不会定义任何违反REST的控件(即链接和链接关系,方法信息,编码信息等)。

    通过链接+语义链接关系,客户端应该能够确定下一个交互步骤,并遵循这些链接并继续与服务进行通信。

    消息不必是人类可读的,可以使用神秘的格式并构建完美有效的REST应用程序。 信息是否是人类可读的并不重要。

    因此,纯XML(application / xml)或JSON(application / json)对构建REST应用程序来说不是足够的格式。 使用这些具有强大语义含义的通用媒体类型的子集并且提供足够的控制信息(链接等)来协调客户端和服务器之间的交互总是合理的。

  • 有关控制信息的更多详细信息,我强烈建议阅读以下内容:http://www.amundsen.com/hypermedia/hfactor/
  • 网站链接:http://tools.ietf.org/html/rfc5988
  • 注册链接关系:http://www.iana.org/assignments/link-relations/link-relations.xml
  • REST仅通过HTTP

    不正确的是,HTTP被广泛使用,当我们谈论REST Web服务时,我们只假设HTTP。 HTTP定义了与其方法(GET,POST,PUT,DELETE,PATCH等)的接口以及可以统一用于与资源进行交互的各种头文件。 这种均匀性也可以通过其他协议来实现。

    PS REST非常简单但非常有趣的解释:http://www.looah.com/source/view/2284


    在日常的实践编程术语中,最大的区别在于,使用SOAP时,您正在使用静态和强烈定义的数据交换格式,与REST和JSON数据交换格式相比,这种格式非常松散。 例如,使用SOAP,您可以验证交换的数据是否与XSD模式匹配。 因此,XSD作为客户和服务器如何理解交换数据的结构的“契约”。

    JSON数据通常不会根据强烈定义的格式传递(除非您使用支持它的框架..例如http://msdn.microsoft.com/en-us/library/jj870778.aspx或实现json-模式)。

    事实上,一些(很多/大多数人)会认为JSON的“动态”秘密行为违背了通过数据契约约束它的哲学/文化(应该JSON RESTful Web服务使用数据契约)

    过去使用动态松散类型语言工作的人倾向于对JSON的松散感觉更加舒适,而来自强类型语言的开发人员更喜欢使用XML。

    http://www.mnot.net/blog/2012/04/13/json_or_xml_just_decide


    SOAP带来了自己的协议,并专注于将应用程序逻辑(不是数据)作为服务来展示。 SOAP公开操作。 SOAP专注于访问命名操作,每个操作都通过不同的接口实现一些业务逻辑。

    虽然SOAP通常被称为“Web服务”,但这是一个误用。 如果与Web有任何关系,SOAP就很少。 REST基于URI和HTTP提供真正的“Web服务”。

    作为例子,这里有几个电话和他们的适当的家庭与评论。

    getUser(User);
    

    在访问资源(数据)时,这是一个休息操作。

    switchCategory(User, OldCategory, NewCategory)
    

    REST允许许多不同的数据格式,因为SOAP只允许XML。 虽然这看起来似乎增加了REST的复杂性,因为您需要处理多种格式,但根据我的经验,它确实非常有用。 JSON通常更适合数据并且解析速度更快。 由于支持JSON,REST可以更好地支持浏览器客户端。

    链接地址: http://www.djcxy.com/p/12363.html

    上一篇: Compare and contrast REST and SOAP web services?

    下一篇: RESTful Alternatives to DELETE Request Body