Rest风格的Web开发

业务场景:

以某零件公司的零件仓库Web服务为例来解释REST Web服务的基本思想。部署在服务器上的零件仓库对外发布一些服务,从而客户能够:

l 获取 一 份元件清单。

l 获取某个特定元件的详细信息。

l 提交一个采购清单(OP)。

l 获取元件清单

 

实现:

由 于 基 于 REST的Web服务可以通过一个URI来访问,因此调用一个Web服务就十分简单。顾客在订购单(Order1)里需要获得零件的列表,假设有一个 Web服务PartsList实现此功能,那么使用http://www.anycorp.com/PartsList即可得到零件列表。客户只需这样调 用,至于服务器端如何实现,对客户来说是透明的。因为对客户是透明的,所以服务器可以自由的修改资源而不影响客户,实现了松散藕合的特性。

客户知道使用前面的URL 后,那么服务器将返回包含零件列表的一个文档,即:

<? xml version”1.0”>

<p:Parts xmlns:p=”http://www.anycorp.com

Xmlns:xlink=”http://www.w3.org/1999/xlink”>

<Part id = “00345” xlink:href = “http://www.anycorp.com/PartsList/00345”>

<Part id = “00346” xlink:href =“http://www.anycorp.com/PartsList/00346”>

</p:Parts>

返回的文档中包含了对各个零件的链接,客户选择合适的链接可以将该链接指向的资源迁移到客户,实现客户状态的自维护,这是REST的关键特征。获取某个特定元件的详细信息

如果想要以XML形式返回每个零件详细的信息,只需在URL后加上零件编号参数,比如http://www.anycorp.com/PartsList/00345,则会返回如下的文档:

<? Xml version=”1.0”>

<p:Part xmlns:p=”http://www.parts-depot.com

Xmlns:xlink=”http://www.w3.org/1999/xlink”>

<Part-ID>00345</Part-ID>

<Name>Widget-A</Name>

<Description>This part is used within the frap assembly</Description>

<Specification xlink:href=”http://www.anycorp.com/PartsList/00345/specification”/>

<UnitCost currency=”USD”>0.10</UnitCost>

<Quantity>10</Quantity>

</p:Part>

从以上返回的数据看,这个数据又链接到更多的数据。客户可继续选择这些链接以获得更详细的数据,这正是REST的关键所在。

提 交一个采购清单(OP),这个服务利用一个指向PO提交的URL。客户依照零件仓库预先定义的PO格式创建一个PO实例文档。客户将PO.xml作为 HTTP POST承载的内容提交上来。PO服务响应此PO提交请求,从而客户可以随时检索、更新、编辑这个PO。PO 于是成为客户端与服务器端共享的一段信息。共享信息(PO)由服务器端指定的URL访问,并暴露为一个Web服务。

posted @ 2013-04-28 10:33  王 庆  阅读(220)  评论(0编辑  收藏  举报