定制 siganushka/api-factory 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

siganushka/api-factory

最新稳定版本:1.1.0

Composer 安装命令:

composer require siganushka/api-factory

包简介

API Factory.

关键字:

README 文档

README

An API Factory Abstraction Layer.

Installation

$ composer require siganushka/api-factory

Usage

An API class needs to implement 3 methods:

// Configure the options required for the request
AbstractRequest::configureOptions(OptionsResolver $resolver): void;

// Configure the request with resolved options
AbstractRequest::configureRequest(RequestOptions $request, array $options): void;

// Parse the response data (ParseResponseException when there is an error)
AbstractRequest::parseResponse(ResponseInterface $response): mixed;

Example:

Github get a user: https://docs.github.com/cn/rest/users/users#get-a-user

namespace App\Request;

use Siganushka\ApiFactory\AbstractRequest;
use Siganushka\ApiFactory\RequestOptions;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Contracts\HttpClient\ResponseInterface;

/**
 * @extends AbstractRequest<array>
 */
class GithubUsers extends AbstractRequest
{
    protected function configureOptions(OptionsResolver $resolver): void
    {
        $resolve
            ->define('username')
            ->required()
            ->allowedTypes('string')
        ;
    }

    protected function configureRequest(RequestOptions $request, array $options): void
    {
        $request
            ->setMethod('GET')
            ->setUrl(sprintf('https://api.github.com/users/%s', $options['username']))
        ;
    }

    protected function parseResponse(ResponseInterface $response): array
    {
        return $response->toArray();
    }
}

$request = new GithubUsers();

$result = $request->send();
// throws MissingOptionsException: The required options "username" are missing.

$result = $request->send(['username' => 'siganushka']);
// {
//  "login": "siganushka",
//  "id": 45844370,
//  "node_id": "MDQ6VXNlcjQ1ODQ0Mzcw",
//  "avatar_url": "https://avatars.githubusercontent.com/u/45844370?v=4",
//  "gravatar_id": "",
//  "url": "https://api.github.com/users/siganushka",
//  "html_url": "https://github.com/siganushka",
//  "followers_url": "https://api.github.com/users/siganushka/followers",
//  "following_url": "https://api.github.com/users/siganushka/following{/other_user}",
//  "gists_url": "https://api.github.com/users/siganushka/gists{/gist_id}",
//  ...
// }

Implementation

统计信息

  • 总下载量: 981
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 5
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2022-09-29