Zend_Service_Amazon
是一个简单的用来操作Amazon web services的API.
Zend_Service_Amazon
含两组不同的API, 一组是传统的遵循 Amazon's自身标准的API;
另一个是一组相对简单的API,通过它我们可以非常容易的构建哪怕是很复杂的搜索请求。
Zend_Service_Amazon
允许开发者通过Amazon的Web Services的API来直接得到Amazon.com网站中的信息
. 例子包括:
保存出版物的信息, 如 图片, 描述, 价格, 等
顾客和编辑的评
类似的产品或附属产品
Amazon.com 报价
ListMania 列表
为了使用 Zend_Service_Amazon
, 你应当已经拥有了Amazon开发者API key
, 如果你要了解更多信息,请访问
Amazon Web Services .
注意 | |
---|---|
你的Amazon开发者API key是和你的Amazon Id相联系的, 所以请小心使用,不要随便泄漏啦 . |
例 29.4. 用传统的API搜索Amazon
在这个例子中, 我们在Amazon中搜索PHP图书,然后遍历结果并打印出它们.
<?php require_once 'Zend/Service/Amazon.php'; $amazon = new Zend_Service_Amazon('AMAZON_API_KEY&'); $response = $amazon->itemSearch(array('SearchIndex' => 'Books', 'Keywords' => 'php')); foreach ($response as $r) { echo $r->Title .'<br />'; } ?>
例 29.5. 使用Query API搜索来Amazon
这里, 我们同样在Amazon中搜索PHP图书, 但是我们将使用Query API来代替上面的方式, 类似 Fluent Interface 设计模式.
<?php require_once 'Zend/Service/Amazon/Query.php'; $query = new Zend_Service_Amazon_Query('AMAZON_API_KEY'); $query->category('Books')->Keywords('PHP'); $results = $query->search(); foreach ($results as $result) { echo $result->Title .'<br />'; } ?>
默认情况下, Zend_Service_Amazon
会选择连接到 Amazon 美国("US") 的web service. 如果你希望它连接到其他的国家,
可以简单的指定一个适当的国家代码作为构造函数的第二的参数来实现:
例 29.6. 选择一个 Amazon Web Service 国家
<?php // Connect to Amazon in Japan require_once 'Zend/Service/Amazon.php'; $amazon = new Zend_Service_Amazon('AMAZON_API_KEY', 'JP'); ?>
注意 | |
---|---|
有效的国家代码: |
如果你知道一个出版物的ASIN,你可以通过itemLookup()
方法来获得这个出版物.
例 29.7. 用ASIN来搜索指定的Amazon出版物
<?php require_once 'Zend/Service/Amazon.php'; $amazon = new Zend_Service_Amazon('AMAZON_API_KEY'); $item = $amazon->itemLookup('B0000A432X'); ?>
itemLookup()
方法还可以接受第二个参数(可选)来传递搜索选项 . 更多细节, 包括现有的选项列表, 请参考
relevant Amazon documentation.
基于现有的各种条件来查询一个出版物可以简单的通过
itemSearch()
方法来实现.如下面的例子:
例 29.8. 对Amazon出版物的搜索
<?php require_once 'Zend/Service/Amazon.php'; $amazon = new Zend_Service_Amazon('AMAZON_API_KEY'); $response = $amazon->itemSearch(array('SearchIndex' => 'Books', 'Keywords' => 'php')); foreach($response as $r) { echo $r->Title .'<br />'; } ?>
The itemSearch()
方法接受一个数组作为参数来处理搜索请求. 更多细节, 包括现有的选项列表, 请参考
relevant Amazon documentation
提示 | |
---|---|
The |
Zend_Service_Amazon_Query
为Amazon Web Service 提供另一个可选的查询 API. 这个API 使用Fluent Interface 模式.
就是说, 你可以使用一个方法链表来实现所有的调用. (e.g., $obj->method()->method2($arg)
)
Zend_Service_Amazon_Query
用过载来简单的构建一个出版物查询,然后允许你基于指定的标准进行搜索.
用方法调用来提供每一个查询参数, 每个方法的参数对应那个查询参数的值:
例 29.9. Search Amazon Using the Alternative Query API
在这个例子中, 使用新的查询 API 作为fluent interface来指定查询参数和值:
<?php require_once 'Zend/Service/Amazon/Query.php'; $query = new Zend_Service_Amazon_Query('MY_API_KEY'); $query->Category('Books')->Keywords('PHP'); $results = $query->search(); foreach ($results as $result) { echo $result->Title .'<br />'; } ?>
它设定查询参数Category
为 "Books" , Keywords
为 "PHP".
关于查询参数的更多信息, 请参考 relevant Amazon documentation.
下面的类都是由
Zend_Service_Amazon::itemLookup()
和
Zend_Service_Amazon::itemSearch()
这两个方法返回的:
Zend_Service_Amazon_Item
一个用来代表由Amazon web service返回的出版物的类. 它包含了出版物的所有属性, 包括 标题, 描述, 评论, 等.
Zend_Service_Amazon_Item
有一组直接与 Amazon标准的API 对应的属性.
表 29.1. Zend_Service_Amazon_Item 属性
名称 | 类型 | 描述 |
---|---|---|
ASIN | string | Amazon 出版物 ID |
DetailPageURL | string | 到相关细节页面url |
SalesRank | string | 出版物的销售等级 |
SmallImage | Zend_Service_Amazon_Image | 出版物的小图片 |
MediumImage | Zend_Service_Amazon_Image | 出版物的中等大小图片 |
LargeImage | Zend_Service_Amazon_Image | 出版物的大图片 |
Subjects | array | 出版物的主题 |
Offers |
Zend_Service_Amazon_OfferSet
|
提供出版物的小图片的简介和报价 |
CustomerReviews | array |
代表出版物的编辑评论的一组
Zend_Service_Amazon_CustomerReview
对象构成的数组
|
EditorialReviews | array |
代表出版物的编辑评论的一组
Zend_Service_Amazon_EditorialReview
对象构成的数组
|
SimilarProducts | array |
代表出版物的类似产品列表的一组
Zend_Service_Amazon_SimilarProduct
对象构成的数组
|
Accessories | array |
代表出版物的附属产品列表的一组
Zend_Service_Amazon_Accessories
对象构成的数组
|
Tracks | array | 代表CD或DVD中歌曲数量和名称的数组 |
ListmaniaLists | array |
与指定出版物相关的Listmania列表 ,用
Zend_Service_Amazon_ListmainList
对象的数组表示
|
PromotionalTag | string | 指定出版物的促销Tag |
Zend_Service_Amazon_Image
代表产品的远程图片.
Zend_Service_Amazon_ResultSet
对象由
Zend_Service_Amazon::itemSearch()
方法返回,并且允许你更容易的处理返回的结果集.
注意 | |
---|---|
该对象实现了 |
int totalResults();
返回返回的搜索结果的总数
每一个由
Zend_Service_Amazon::itemSearch()
和
Zend_Service_Amazon::itemLookup()
返回的结果都包含一个
Zend_Service_Amazon_OfferSet
对象 ,通过他我们可以得到出版物价格信息.
表 29.3. Zend_Service_Amazon_OfferSet 属性
名称 | 类型 | 描述 |
---|---|---|
LowestNewPrice | int | 在"New"条件下,出版物的最低价 |
LowestNewPriceCurrency | string |
LowestNewPrice 所使用的货币
|
LowestOldPrice | int | 在"Used"条件下,出版物的最低价 |
LowestOldPriceCurrency | string |
LowestOldPrice 的货币
|
TotalNew | int | Total number of "new" condition available for the item |
TotalUsed | int | 出版物可用的所有 "used" 条件的数量 |
TotalCollectible | int | 出版物可用的所有 "collectible" 条件的数量 |
TotalRefurbished | int | 出版物可用的所有 "refurbished" 条件的数量 |
Offers | array |
Zend_Service_Amazon_Offer
对象的数组
|
出版物的价格信息都由Zend的
Zend_Service_Amazon_Offer
对象返回。
当我们搜索一个出版物时, Amazon 同时会返回一个相似产品的列表,
使顾客更容易找到他们喜欢的商品。这些类似产品的列表由Zend_Service_Amazon_SimilarProduct
对相返回.
每个对象包含相关的类似产品,并允许你进行进一步的请求来获得类似产品的全部信息
返回出版物的附属产品由 Zend_Service_Amazon_Accessories
对象表示
顾客的每条评论由 Zend_Service_Amazon_CustomerReview
对相返回.
出版物的编辑评论由 Zend_Service_Amazon_EditorialReview
对相返回
每个相关的List Mania Zend_Service_Amazon_Listmania
对相返回.