如何区分 SOAP 与 REST 请求?
Posted
技术标签:
【中文标题】如何区分 SOAP 与 REST 请求?【英文标题】:How to distinguish SOAP vs REST request? 【发布时间】:2018-03-13 18:48:58 【问题描述】:假设我有一个 XML,它是对服务的请求。 如何判断它是 RESTful 服务还是 SOAP 服务请求?
仅根据请求内容可以找到哪些可区分的特征?
【问题讨论】:
文件怎么可能是请求?请说明您的问题。可以发一下文件内容吗? 我的意思是 XML 内容。这是假设性问题。 好的。好吧,如果您的“XML 内容”表示作为 POST 发送到服务的 SOAP 请求,我会说它是 SOAP。如果 XML 是内容或负载本身(没有在服务器端进行解释),则取决于您将其发送到的 URL 类型。如果 URL 标识了一个资源,那么它很可能是一个 REST 请求。 XML 是否基于 WSDL?如果是这样,您就可以非常确定地处理 SOAP 服务。如果您不知道,您可以查看 XML 的 structure。如果它包含一个 SOAP 信封和正文,可能还有一个标头,那么它可能是从 SOAP 服务发出的。如果文档不遵循此结构,则它可能是从普通 HTTP 甚至 REST 服务发出的。请注意,一些伪 REST 服务(实际上是 RPC)也可能返回适合 SOAP 的内容。但是,只要远程服务器理解请求,您为什么还要关心 SOAP vs REST, when to use one and not the other?的可能重复 【参考方案1】:这是一个 SOAP 请求的示例,这是一个在 http://www.webservicex.net/New/Home/ServiceDetail/56 上调用按国家/地区获取城市 API 的示例:
POST /globalweather.asmx HTTP/1.1
Host: www.webservicex.net
User-Agent: curl/7.45.0
Accept: */*
Content-Type: text/xml
Content-Length: 442
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:tns="http://www.webserviceX.NET">
<soap:Body>
<GetCitiesByCountry xmlns="http://www.webserviceX.NET">
<CountryName>France</CountryName>
</GetCitiesByCountry>
</soap:Body>
</soap:Envelope>
您可以看到 XML 正文的区别特征。
对通用服务的 REST 调用可以包含 API 定义的任何 XML 数据。
这可能看起来像:
POST /getaddress HTTP/1.1
Host: localhost:3000
User-Agent: curl/7.45.0
Accept: */*
Content-Length: 85
Content-Type: text/xml
<location>
<latitude>34.067225</latitude>
<longitude>-118.474307</longitude>
</location>
【讨论】:
以上是关于如何区分 SOAP 与 REST 请求?的主要内容,如果未能解决你的问题,请参考以下文章