fulfillment/api-wrapper

用于简化 FDC API 认证和通信的简单封装

0.2.0 2021-01-12 15:24 UTC

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__ . /logsstorage_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)