我从网络服务世界开始,我有几个问题:
从我读过的内容来看,REST可以被理解为对URL的简单调用,它给出了一定的预期结果。那么,REST Web服务和简单网站之间有什么区别?
网络服务与语言无关。因此,如果我使用返回序列化Person
类对象的方法开发基于Java的REST Web服务,并且我的客户端是.NET应用程序,那么如何在.NET端重构此类?它在实践中是如何完成的?我是否必须在Web服务上构建返回对象的表示形式,并在.NET端解析并构建它?
实际上,REST和SOAP调用之间的区别是什么?
答案 0 :(得分:6)
有关RESTful服务的说明,请参阅Richardson Maturity Model。
要达到3级,必须满足Hypermedia as the Engine of Application State. abrivated HATEOAS constraint(也称为超媒体约束)。这意味着那里的大多数服务都不是RESTful,而是合理的CRUD服务......这很好......
REST的优质资源是REST in Practice
SOAP和REST之间的主要区别在于REST服务没有定义“操作”的WSDL,感谢上帝。然而,数据结构可以由Schematron,XSD for XML ...等模式语言定义。
答案 1 :(得分:1)
REST代表代表性国家转移。它建立在HTTP协议无状态的基础上,并指定了一些方法,如PUT / GET / POST等.REST将语义附加到这些方法。例如,GET表示“读取/加载”。 PUT表示'保存'。 POST意味着'更新'。 (我想我做对了......)
因此,REST不是对URL的调用,REST是一个概念。您可以通过调用Urls来使用REST。 REST和“简单网站”之间的区别在于REST语义。 PUT请求意味着一件事,GET请求意味着另一件事,等等。
RESTful webservices是独立于语言的,因为它依赖于HTTP协议;而已。除了使用HTTP协议的能力之外,它们不依赖于任何语言功能。
答案 2 :(得分:0)
REST返回结构化的XML或JSON数据,您不会发回整个网页,这可能很难解释,并且会不必要地复杂化。
您可以使用解析器(包括.net语言)将XML或JSON数据解析为任何语言的对象。在这个意义上的对象并不意味着具有vtable等的完整的.net对象。
SOAP会重载使用HTTP请求发送的POST数据,因此您只需要一个URL来发送单个XML数据,而不是将多个URL发送到哪个URL。实际上,差异主要是语义上的。