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

REST Service 的最佳实践,第 2 部分 REST service 化一个数据系统-4

REST Service 的最佳实践,第 2 部分 REST service 化一个数据系统-4

  • 发布成功以后,如图 11 所示。                        图 11. 发布成功以后
RESTify 展示层表示层主要负责数据的展示,我们称之为 viewer。开发 Viewer 需要具有较多的 Web 开发的技巧,例如 HTML,JavaScript 和 CSS 等。为了重用数据的展示,和数据层一样,我们也需要模块化,REST 服务化。现在流行的可重用的 Web 小组件有很多的规范,像 google gadget,IBM iWidget 等等。下面以 iWidget 规范为例,来展示一个 viewer 的开发过程。下面一个 widget 为例,简要的介绍,结合数据服务,widget 的开发过程。
下面以一个简单的用来显示亚马逊图书搜索的数据服务的 viewer。图书搜索数据服务提供的数据如清单 2 所示:
清单 2. 图书搜索服务的数据样本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<entry xmlns:aws="http://webservices.amazon.com/AWSECommerceService/2005-10-05">
<title> Don't Make Me Think: A Common Sense Approach to WebUsability </title>
<aws:ASIN> 0321344758 </aws:ASIN>
<link rel="alternate" href="http://www.amazon.com/Dont-Make-Think-Usability-ebook/dp
/B000SEGQNS%3FSubscriptionId%3DAKIAJ3RS7ICEOBT6PH4Q%26tag%3Dws%26linkCode%3Dxm2%26cam
p%3D2025%26creative%3D165953%26creativeASIN%3D0321344758"/>
<icon> </icon>
<logo> </logo>
<content type="application/xml">
<p:row xmlns:p="http://www.example.com">
<aws:title> Don't Make Me Think: A Common Sense Approach to WebUsability </aws:title>
<aws:ASIN> 0321344758 </aws:ASIN>
<link rel="alternate" href="http://www.amazon.com/Dont-Make-Think-Usability-ebook
/dp/B000SEGQNS%3FSubscriptionId%3DAKIAJ3RS7ICEOBT6PH4Q%26tag%3Dws%26linkCode%3Dxm2%26
camp%3D2025%26creative%3D165953%26creativeASIN%3D0321344758"/>
<author> Steve Krug</author>
<aws:Manufacturer> New Riders Press </aws:Manufacturer>
<aws:lowestNewPrice> $23.30 </aws:lowestNewPrice/>
<aws:averageRating> 4.5 </aws:averageRating>
<p:image> </p:image>
</p:row>
</content>
</entry>




按照 iWidget 的规范,开发一个 widget 需要提供 widget 的定义文件,如清单 3 所示:
清单 3. 图书搜索服务 viewer 的 widget 定义文件
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
36
37
38
39
40
41
42
43
44
45
<iw:iwidget name="amazonSearchViewer" xmlns:iw="http://www.ibm.com/xmlns/prod/iWidget"
iScope="common.iwidget.amazonSearchViewer" allowInstanceContent="true"
  supportedModes="view edit" mode="view" lang="en">

<iw:itemSet id="attributes" >
<iw:item id="feedURL" value="" readOnly="false"/>
<iw:itemDescription name="feedURL" type="url.feed.tabular"
description="Customized widget for displaying book list from Amazon"/>

<iw:item id="title" value="" readOnly="false"/>
<iw:item id="view" value="table" readOnly="false"/>

<iw:item id="titleElement" value="title" />
<iw:itemDescription name="titleElement" type="text" description="book title element"/>
<iw:item id="authorElement" value="author" />
<iw:itemDescription name="authorElement" type="text" description="book author element"/>
<iw:item id="publisherElement" value="Manufacturer" />
<iw:itemDescription name="publisherElement" type="text"
description="book publisher element"/>
<iw:item id="asinElement" value="asin" />
<iw:itemDescription name="asinElement" type="text" description="book isbn element"/>
<iw:item id="ratingElement" value="AverageRating" />
<iw:itemDescription name="ratingElement" type="text" description="book rating element"/>
<iw:item id="imageElement" value="image" />
<iw:itemDescription name="imageElement" type="text" description="book rating element"/>
<iw:item id="priceElement" value="lowestNewPrice" />
<iw:itemDescription name="priceElement" type="text" description="book price element"/>
</iw:itemSet>

<iw:resource uri="../styles/common.css" />
<iw:resource uri="amazonSearchViewer.js" />
<iw:content mode="view">
<![CDATA[
<div id="_IWID_serviceNode">
<div id="_IWID_loadingNode"
style="display:none;margin-left:48%;margin-top:40px;height:80px;">
</div>
</div>
]]>
</iw:content>
<iw:content mode="edit">
<![CDATA[
    ]]>
</iw:content>
</iw:iwidget>




itemSet 用来描述 widget 的可配置信息,包括 FeedURL,widget 的标题,还包括和数据服务相关的数据项的描述:titileElement 用来描述图书的标题信息、authorElement 用来描述图书的作者信息等等。
返回列表