tobento/service-requester

提供简化方法的 PSR-7 服务器请求包装类。

1.0.2 2023-04-23 07:41 UTC

This package is auto-updated.

Last update: 2024-09-23 11:24:40 UTC


README

提供简化方法的 PSR-7 服务器请求包装类。

目录

入门

使用以下命令安装请求者服务项目的最新版本。

composer require tobento/service-requester

要求

  • PHP 8.0 或更高版本

亮点

  • 框架无关,适用于任何项目
  • 解耦设计

文档

创建请求者

use Tobento\Service\Requester\Requester;
use Tobento\Service\Requester\RequesterInterface;
use Nyholm\Psr7\Factory\Psr17Factory;

// Any PSR-7 server request
$serverRequest = (new Psr17Factory())->createServerRequest(
    method: 'GET',
    uri: 'https://example.com',
);

$requester = new Requester($serverRequest);

var_dump($requester instanceof RequesterInterface);
// bool(true)

可用方法

方法

返回大写的 HTTP 方法,例如 GET、POST、PUT...

var_dump($requester->method());
// string(3) "GET"

isSecure

返回请求是否安全。

var_dump($requester->isSecure());
// bool(false)

isContentType

确定请求是否为指定的内容类型。

var_dump($requester->isContentType('application/json'));
// bool(false)

isReading

确定 HTTP 请求是否为读取请求,如果方法是 HEAD、GET 或 OPTIONS 之一,则为读取请求。

var_dump($requester->isReading());
// bool(true)

isPrefetch

确定 HTTP 请求是否为预取调用。

var_dump($requester->isPrefetch());
// bool(false)

isAjax

检查请求是否通过 AJAX 发出。

var_dump($requester->isAjax());
// bool(false)

isJson

确定请求是否发送 JSON。

var_dump($requester->isJson());
// bool(false)

wantsJson

确定请求是否请求 JSON。

var_dump($requester->wantsJson());
// bool(false)

json

返回请求的 JSON 负载。
查看 集合服务 了解有关集合的一般信息。

use Tobento\Service\Collection\Collection;

var_dump($requester->json() instanceof Collection);
// bool(true)

input

返回请求输入数据。根据内容类型和方法,返回解析后的正文数据或查询参数。
查看 集合服务 了解有关集合的一般信息。

use Tobento\Service\Collection\Collection;

var_dump($requester->input() instanceof Collection);
// bool(true)

uri

返回 Uri。

use Psr\Http\Message\UriInterface;

var_dump($requester->uri() instanceof UriInterface);
// bool(true)

request

返回服务器请求。

use Psr\Http\Message\ServerRequestInterface;

var_dump($requester->request() instanceof ServerRequestInterface);
// bool(true)

acceptHeader

返回 accept 标头实例。

use Tobento\Service\Requester\AcceptHeader;
use Tobento\Service\Requester\AcceptHeaderItem;

var_dump($requester->acceptHeader() instanceof AcceptHeader);
// bool(true)

var_dump($requester->acceptHeader()->has('application/json'));
// bool(true)

var_dump($requester->acceptHeader()->get('application/json'));
// null|AcceptHeaderItem

// returns all items.
$items = $requester->acceptHeader()->all();

// returns the first item found or null.
$firstItem = $requester->acceptHeader()->first();

// returns true if first item is application/json, otherwise false.
$requester->acceptHeader()->firstIs('application/json');

// filter items returning a new instance.
$acceptHeader = $requester->acceptHeader()->filter(
    fn(AcceptHeaderItem $a): bool => $a->quality() > 0.5
);

// sort items returning a new instance.
$acceptHeader = $requester->acceptHeader()->sort(
    fn(AcceptHeaderItem $a, AcceptHeaderItem $b) => $b->quality() <=> $a->quality()
);

// sorts by highest quality returning a new instance.
$acceptHeader = $requester->acceptHeader()->sortByQuality();

致谢