首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

REST Service 的最佳实践,第 3 部分 把 SOAP 服务转化为 REST 服务-2

REST Service 的最佳实践,第 3 部分 把 SOAP 服务转化为 REST 服务-2

本帖最后由 look_w 于 2018-3-17 11:04 编辑

根据这个服务的描述,我们来看一下怎么调用这个服务。清单 2 和清单 3 给出了调用示例和响应示例。根据描述我们知道,SOAPAction 是 GetQuote,HTTP method 是 GET,这个服务的输入参数是一个 String 类型的股票代码,如 IBM,参数名称是 symbol,服务的端点是 。首先如清单 2 所示构建 StockQuoteHttpGet 服务的请求。
清单 2. A SOAP Request 示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
GET /stockquote.asmx HTTP/1.1
Host:  
Content-Type: text/xml; charset="utf-8"
Content-Length: nnn
SOAPAction= "http://www.webserviceX.NET/GetQuote"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
   <GetQuote xmlns="http://www.webserviceX.NET/">
     <symbol>IBM</symbol>
   </GetQuote>
</soap:Body>
</soap:Envelope>




清单 3 返回的是按照 SOAP 协议封装的调用响应,在 SOAP body 里面,GetQuoteResult 里面放置的是调用结果,返回的是 XML 表示的 IBM 在调用时刻的股价信息,
清单 3. A SOAP response 示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
HTTP/1.1 200 OK
Content-Type: text/xml; charset='utf-8'
Content-Length: nnn

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
   <GetQuoteResponse xmlns="http://www.webserviceX.NET/">
     <GetQuoteResult>
<StockQuotes>
<Stock>
<Symbol> IBM </Symbol>
<Last> 144.36 </Last>
<Date> 11/18/2010 </Date>
<Time> 4:00pm </Time>
<Change> 0.00 </Change>
<Open> N/A </Open>
<High> N/A </High>
<Low> N/A </Low>
<Volume> 0 </Volume>
<MktCap> 179.3B </MktCap>
<reviousClose> 144.36 </PreviousClose>
<ercentageChange> 0.00% </PercentageChange>
<AnnRange> 116.00 - 147.53 </AnnRange>
<Earns> 11.001 </Earns>
<-E> 13.12 </P-E>
<Name> International Bus </Name>
</Stock>
</StockQuotes>
</GetQuoteResult>
   </GetQuoteResponse>
</soap:Body>
</soap:Envelope>




从清单 2 和清单 3 可以看出,基于 SOAP 的 Web 服务把 SOAP 请求和 SOAP 响应封装在 soap Envelope 中,服务的调用端需要自己构建这个 SOAP 信封,并且需要一定的 code 去做解析工作。一般来说,XML 的解析是一项复杂度比较高的任务,比较耗时,这将会影响整个程序的性能。
佛山思海网络  十八年优质运营商
佛山联通G口大带宽常年优惠促销!
品质服务器托管、租用大特惠!
稳定流畅 24*7售后技术在线
欢迎咨询QQ:983054746
广东佛山电信千兆独享服务器租用低至16999/月!数量有限,赶快抢购 !-思海网络
返回列表