anikapiz

Apiz是一个REST API管理器的模板

维护者

详细信息

github.com/ssi-anik/apiz

源代码

安装: 730

依赖: 0

建议者: 0

安全: 0

星星: 5

关注者: 2

分支: 13

类型:php

v3.0 2023-11-20 14:57 UTC

This package is auto-updated.

Last update: 2024-09-20 16:47:49 UTC


README

APIZ是一个PHP API客户端开发套件。您可以使用此包轻松处理所有类型的JSON API响应。

需求

  • PHP >= 8

安装

composer require anik/apiz

配置

此包无需额外配置。

用法

让我们为https://reqres.in创建一个API服务。

假设您需要为您的包创建多个API服务。您的服务目录是app/Services。现在我们正在为https://reqres.in开发一个服务并创建一个名为ReqResApiService.php的类文件,该文件扩展自\Apiz\AbstractApi类。

namespace App\Services;

use Apiz\AbstractApi;

class ReqResApiService extends AbstractApi
{
    protected function setBaseUrl() {
        return 'https://reqres.in';
    }
}

AbstractApi是一个抽象类,其中setBaseUrl()是一个抽象方法。

要获取该URL的API响应,它们有一个前缀'api',所以我们首先使用受保护的属性$prefix设置它

namespace App\Services;

use Apiz\AbstractApi;

class ReqResApiService extends AbstractApi
{
    protected function setBaseUrl() {
        return 'https://reqres.in';
    }

    protected function setPrefix () {
        return 'api';
    }
}

现在我们创建一个获取所有用户信息的方法

namespace App\Services;

use Apiz\AbstractApi;

class ReqResApiService extends AbstractApi
{
    protected function setBaseUrl()
    {
        return 'https://reqres.in';
    }

    protected function setPrefix () {
        return 'api';
    }

    public function allUsers()
    {
        $users = $this/*->query(['page'=>2])*/->get('/users');

        if ($users->getStatusCode() == 200) {
            return $users->parseJson();
        }

        return null;
    }
}

我们为此包使用GuzzleHttp。因此,您可以使用所有HTTP动词作为魔法方法。这完全不麻烦。我们返回三个对象responserequestcontents作为所有响应。您可以从此响应中访问所有Guzzle响应方法。我们使用魔法方法从响应中访问它。

输出

Response

带有表单参数的Post请求

public function createUser(array $data)
{
    $user = $this->formParams($data)
            ->post('/create');

    if ($user->getStatusCode() == 201) {
        return $user->parseJson();
    }

    return null;
}

参数选项列表

  • formParams(array $params)
  • headers(array $params)
  • query(array $params)
  • allowRedirects(array $params)
  • auth(string $username, string $password [, array $options])
  • body(array|string $contents)
  • json(array $params)
  • file(string $name, string $file_path, string $filename [, array $headers])
  • attach (string $name, string $contents, string $filename [, array $headers])
  • params(array $params)

HTTP动词列表

  • get(string $uri)
  • post(string $uri)
  • put(string $uri)
  • delete(string $uri)
  • head(string $uri)
  • options(string $uri)

额外方法

  • getGuzzleClient()

日志记录

Apiz允许您记录您的请求和响应。它需要配置一些方法。

  • logger()返回\Psr\Log\LoggerInterface 对象。返回null将不会记录任何数据。
  • requestFormatter()应返回满足\Loguzz\Formatter\AbstractRequestFormatter实现的对象。返回null将不会记录请求数据。
  • responseFormatter()应返回满足\Loguzz\Formatter\AbstractResponseFormatter实现的对象。返回null将不会记录响应数据。
  • logRequestLength()应返回整数值。这是记录curl字符串时的长度。
  • logOnlySuccessResponse()返回true将仅记录成功的响应数据,如果Guzzle没有引发任何错误。
  • logOnlyExceptionResponse()返回true将仅记录错误响应,如连接超时、响应超时。
  • logLevel()可以设置为任何可用的日志级别。
  • tag()应返回非空字符串,该字符串将日志设置为["tag" => "log-message"]格式。
  • forceJson()应返回布尔值,该值将消息转换为JSON字符串(如果为true),否则转换为数组(如果为false)。它内部转换为布尔值。
  • useSeparator()应返回布尔值。与如tag.requesttag.successtag.failure之类的标签一起使用。它内部转换为布尔值。

可用的请求和响应格式化程序。