imclarky/tesco-api

Tesco超市API的PHP客户端

v0.1.0-beta 2018-09-07 22:56 UTC

This package is not auto-updated.

Last update: 2024-09-20 08:00:22 UTC


README

Tesco超市API的PHP客户端

Packagist Travis (.org) StyleCI Coveralls github Packagist

内容

入门

安装

安装,只需使用composer要求该包

composer require imclarky/tesco-api

需求

  • PHP >7.1
  • Tesco API密钥(见下文)

API密钥

您首先需要从Tesco开发者门户注册API密钥,通过注册账户并订阅通用API。

简单示例

以下是一个向Tesco API发送请求以查找与单词巧克力相关的杂货的简单示例

$tesco = new \ImClarky\TescoApi\TescoApi('apikey');

$results = $tesco->newGroceryRequest()->addSearchTerm('chocolate')->send();

foreach ($results->getModels() as $grocery) {
    echo $grocery->getName();
}

使用

请求

创建对API的请求有两种方式。第一种,如上所示,是使用基础TescoApi类。

基础类使用您的API密钥初始化

$tescoApi = new \ImClarky\TescoApi\TescoApi('apikey');

此基础类有3个主要功能,每个功能都将返回一个相关请求类的实例。

public function newGroceryRequest(): GroceryRequest
{
    return new GroceryRequest($this->_apiKey);
}

public function newProductRequest(): ProductRequest
{
    return new ProductRequest($this->_apiKey);
}

public function newStoreLocationRequest(): StoreLocationRequest
{
    return new StoreLocationRequest($this->_apiKey);
}

或者,您可以直接创建请求类的实例,再次传递API密钥作为参数。

$groceryRequest = new \ImClarky\TescoApi\Requests\GroceryRequest('apikey');

$productRequest = new \ImClarky\TescoApi\Requests\ProductRequest('apikey');

$storeLocationRequest = new \ImClarky\TescoApi\Requests\StoreLocationRequest('apikey');

每个请求对象都有不同的方法来添加查询参数到API请求。

杂货请求

addSearchTerm(string $searchTerm)
添加搜索词以进行搜索。提供搜索词是必需的;如果发送请求时未添加词,则请求类将抛出RequestException

$request = new GroceryRequest('apikey');

$response = $request->addSearchTerm('biscuits')->send();

产品请求

addGtin(string $gtin)
将产品的GTIN/EAN-13号码添加到搜索列表中。

addTpnb(string $tpnb)
将产品的Tesco产品编号基础(TPNB)号码添加到搜索列表中。

addTpnc(string $tpnc)
将产品的Tesco产品编号消费者(TPNC)号码添加到搜索列表中。

addCatId(string $catId)
将产品的目录ID添加到搜索列表中。

这些函数中的每个都返回请求对象实例,以便链式调用上述方法。

$request = new ProductRequest('apikey');

$response = $request->addGtin('0332322384993')
                    ->addGtin('0368604930293')
                    ->addTpnc('34029384')
                    ->send();

商店位置请求

addSort(string $type, string $value)
添加排序查询参数。目前唯一的排序类型是附近;这将按给定位置的距离对结果进行排序。

addFilter(string $type, $value)
添加过滤器查询参数以过滤结果。

通常,将在$value参数中传递一个字符串 - 这将添加术语并将用于where子句中的AND表达式。但是,如果传递一个数组,则数组的值将被视为OR表达式。例如

$response = $storeRequest->addFilter(Filter::FILTER_FACILITY, Facility::FACILITY_ATM)
                         ->addFilter(Filter::FILTER_FACILITY, Facility::FACILITY_DBT)
                         ->addFilter(Filter::FILTER_FACILITY, [
                             Facility::FACILITY_CAR_WASH,
                             Facility::FACILITY_JET_WASH,
                             Facility::FACILITY_HAND_CAR_WASH
                         ]);

// In an SQL-like querying language
// WHERE Facility = 'ATM' AND Facility = 'DBT' AND (Facility = 'Car Wash' OR Facility = 'Jet Wash' OR Facility = 'Hand Car Wash')

addLike(string $type, $value, bool $start = false)
添加过滤器查询参数以过滤结果。这与过滤器完全相同,但API将执行全文搜索以查找值。如果$start设置为true,则搜索将仅返回术语位于开头的选项。

分页

商店位置和杂货请求结果都返回在页面上。您可以为这些请求设置偏移量和限制,以及浏览页面。

setLimit(int $limit)
设置请求的限制 - 即返回的结果数量。如果此函数从未调用,则使用默认值10

setOffset(int $offset)
设置请求的偏移量 - 即偏移的结果数量。如果此函数从未调用,则使用默认值0

getNextPage()
获取下一页的结果

getPrevPage()
获取上一页的结果。

goToPage(int $page)
转到特定页面的结果。

响应

每次成功的请求都将返回一个相关的响应对象。例如,一个 StoreLocationRequest 返回一个 StoreLocationResponse。每个响应对象将包含响应头、响应状态等信息,以及从响应数据生成的模型(见下文)。

模型

模型是从请求获取的响应数据生成的。

杂货

产品

商店

营业时间和例外情况

设施

每日指导摄入量(GDAs)

营养