tobento / service-requester
提供简化方法的 PSR-7 服务器请求包装类。
1.0.2
2023-04-23 07:41 UTC
Requires
- php: >=8.0
- psr/http-message: ^1.0
- tobento/service-collection: ^1.0
Requires (Dev)
- nyholm/psr7: ^1.4
- phpunit/phpunit: ^9.5
- vimeo/psalm: ^4.0
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();