4.14 Zend_Service_Amazon利用Amazon Web服务实现畅销书的表示
第2章介绍过REST方式的Web API。这里再介绍一种称为“Amazon Web服务”的REST形式的API。通过“Amazon Web服务”,就好像你可以拥有Amazon.com巨大的商品数据库一样,例如,你可以通过特定的关键字检索它的书籍数据库,将最新的畅销书一览显示出来,如图所示。
本例要点
第2章中已经介绍过了,REST方式的Web API将返回单纯的XML文档。不用什么特殊的程序库,只要利用如SimpleXml/XSL样的标准函数,就可以解析这些返回的XML,取得需要的结果。
但是,尽管这些标准函数能够方便地应用到XML解析中,使用者也必须理解整个API的请求/应答的式样。从某种程度上说,这恰恰是难点所在。
这时候就出现了Zend_Service_XXXX样的特定组件,在Zend Framework中,除了Zend_Service_Amazon外,还有Zend_Service_Yahoo,Zend_Service_Flickr等有名网站的服务组件。这些组件比使用标准函数更直观的利用这些网站的Web API。
本节就是以Zend_Service_Amazon为例子,来演示一下如何利用上述组件。
目录结构
本例代码
以嵌入帧的形式调用amazon.php,并设定检索关键字keyword,当检索关键字中含有多字节文字时,必须使用urlencode函数进行URL encode的转换。
初始化Zend_Service_Amazon类,构造函数有两个参数,分别为Amazon服务的连接键、国家代码。连接键必须事先在Amazon网站取得。
具体的商品检索是itemSearch方法实现的,itemSearch方法的参数里,以联想数组的形式指定必需的参数。具体需要指定的参数有SearchIndex(检索对象数据库)、Keywords(关键字)、ResponseGroup(数据种类)。这里将SearchIndex参数指定为Books,也就是说将对本地书籍数据库进行检索,其他的检索对象数据库有ForeignBooks(外文书籍)、Music(音乐)、VideoGames(游戏)、Electronics(电子制品)等。ResponseGroup参数可以指定Small/Medium/Large,Small是指返回最小范围的信息,Large是指返回最大范围的信息。具体返回内容,可以使用print_r函数来确认Zend_Service_Amazon_Item对象的内容。
itemSearch方法返回Zend_Service_Amazon_ResultSet对象,14行到29行顺序取出Zend_Service_Amazon_ResultSet对象中的商品信息,并以商品一览的形式显示。
变量$cnt保存返回的商品数量,超过5件,退出循环(最多输出5件)。
补充
运行实例时的注意事项
本节使用的Zend_Service_Amazon是Zend Framework的组件(component)之一,在运行本节的代码时,首先要检查一下Zend Framework是否可以使用。
如果严格按照本书第1章介绍的方法配置环境的话,Zend Framework已经可以使用了。
连接键的取得
利用Amazon Web的服务时,需要事先取得识别应用程序的关键字(key),取得是免费的,网页界面如图4-6所示。
图4-6 取得连接键的网页
要取得连接键,先进入上面的网页,选择页面右边的“Your Web Services Account”→“AWS Account Activity”。
已经拥有Amazon账号的用户,可以从下一页登录。第一次使用Amozon服务的用户,选择“No,I Am a New Customer”进行用户注册。
将显示账号生成画面,输入必要的如用户名、住址等信息后,账号注册好。注册好之后会返回上述开始的画面,请选择“Your Web Services Account”→“AWS Access Identifiers”。
Access Key ID and Secret Access Key
以注册好的账号登录后,显示如图4-7所示的画面。画面中“Your Access Key ID”的项目中,就是建成的连接键。
图4-7 建成连接键
Zend_Service_Amazon_Item对象的属性
Zend_Service_Amazon_Item是管理个别商品信息的对象。公开了如表4-11所示的属性。
表4-11 Zend_Service_Amazon_Item对象的属性
共有条评论 网友评论