fulfillment / api-wrapper
用于简化 FDC API 认证和通信的简单封装
0.2.0
2021-01-12 15:24 UTC
Requires
- foxxmd/php-utilities: dev-master
- guzzlehttp/guzzle: ~6.0
- league/climate: ~3.2
- vlucas/phpdotenv: 2.*
This package is auto-updated.
Last update: 2024-09-09 22:57:13 UTC
README
简化与 FDC API 进行认证和低级别通信的封装
示例
use Fulfillment\Api\Api; $data = [ 'endpoint' => $endPoint, 'clientId' => $clientId, 'clientSecret' => $clientSecret, 'accessToken' => $accessToken, 'username' => $username, 'password' => $password ]; $apiClient = new Api($data); $newPostageClient = [ 'email' => 'some@email.com', 'clientId' => 2 ]; $returnedUser = $apiClient->post('users', $newPostageClient); //POST request with body as json $apiClient->get('users', ['clientId' => '2']); //GET request with query string ?clientId=2
安装
composer require fulfillment/api-wrapper
配置
认证配置
认证的最小要求 -- 您必须拥有
- 客户端 ID
- 客户端密钥
- 用户名
- 密码
- 作用域 -- 要使用多个作用域,请使用空格分隔每个作用域,例如
oms postage
AND/OR
- 访问令牌
注意,如果访问令牌过期,如果没有凭证,则无法重新认证。
可以使用几种选项解析认证
数组
$data = [ 'endpoint' => $endPoint, 'clientId' => $clientId, 'clientSecret' => $clientSecret, 'accessToken' => $accessToken, 'username' => $username, 'password' => $password, 'scope' => 'oms' ]; $apiClient = new Api($config)
DotEnv
使用与 phpdotenv 库兼容的 .env
文件。只需在构造函数中将包含您的 .env
文件的文件夹的绝对路径作为参数即可。
$fileLocation = __DIR__ . DIRECTORY_SEPARATOR . '.env'; $apiClient = new Api($fileLocation);
环境变量
使用环境变量(在 $_ENV
中可用)
- USERNAME
- PASSWORD
- CLIENT_ID
- CLIENT_SECRET
- ACCESS_TOKEN
- API_ENDPOINT
- SCOPE
$apiClient = new Api();
注意:如果生成了访问令牌,则包将存储该令牌的副本,位于 __DIR__ . /logs
或 storage_path('logs/')
返回的位置。
日志配置
该包默认为控制台输出或文件,如果 STDOUT 不可用。您可以通过传递实现 League\CLImate\Util\Writer\WriterInterface
的对象来使用自己的记录器。
$apiClient = new Api($config, $logger);
Guzzle 配置
您可以通过将其传递给构造函数来使用自己的 guzzle
实例。
$apiClient = new Api($config, $logger, $guzzle)
如果没有传递实例,则会创建一个新的实例。
用法
如果提供了凭证,则客户端可以在没有访问令牌或访问令牌无效的情况下进行认证。
基本请求是通过使用 HTTP 动词方法实现的
- get($url, $queryString = null)
- post($url, $body, $queryString = null)
- patch($url, $body, $queryString = null)
- delete($url, $queryString = null)
$apiClient->get($url, $queryString); $apiClient->post($url, $body, $queryString); $apiClient->patch($url, $body, $queryString); $apiClient->delete($url, $queryString);
- $url 是从端点开始的相对 URL,它在发送请求之前连接 --
$fullURl = $endPoint . '/' . $url;
- $body 是可以 json 化的数组或对象。
- $queryString 表示为键/值数组 --
$queryString = ['myKey' => 'myValue']
等同于http://endpoint/url?myKey=myValue
辅助函数
有两个函数可用于使响应解析更方便
parseError
此函数将解析由 Guzzle 抛出的 RequestException
并返回 FDC 使用的标准错误对象。
RequestParser::parseError($r)
getErrorCode
此函数将执行与上述相同的操作,但如果错误中存在错误代码,则只返回错误代码。
RequestParser::getErrorCode($r)