caridea / http
一个小型的HTTP工具库
3.0.0
2018-01-14 17:35 UTC
Requires
- php: >=7.1.0
- psr/http-message: ^1.0
Requires (Dev)
- phpunit/phpunit: ^6.0.0
- zendframework/zend-diactoros: ^1.0
README
Caridea是一个微型的PHP应用程序库。这个小巧的家伙是当你只需要一些帮助而不需要完整框架时使用的。
这是它的HTTP组件。它包括用于处理PSR-7 HTTP请求和响应的小工具,包括
- 实现了RFC 7807,"HTTP API的问题详情"。
- 一个解析请求中常见分页参数的工具
- 一个正确解析具有相同名称多个参数的查询字符串的工具
- 一个确定客户端首选接受的MIME类型的工具
安装
您可以使用Composer安装此库
$ composer require caridea/http
- 此项目的master分支(版本3.x)需要PHP 7.1,并依赖于
psr/http-message
。 - 此项目的2.x版本需要PHP 7.0,并依赖于
psr/http-message
。 - 此项目的1.x版本需要PHP 5.5,并依赖于
psr/http-message
。
合规性
此库的版本将遵循语义版本控制。
我们的代码旨在遵守PSR-1、PSR-2和PSR-4。如果您发现任何与标准合规性相关的问题,请发送拉取请求!
文档
示例
只是几个快速示例。
问题详情
我们包含了一个可以序列化为JSON或附加到PSR-7 HTTP响应的RFC 7807实现。
use Caridea\Http\ProblemDetails; use Zend\Diactoros\Uri; $problem = new ProblemDetails( new Uri('http://example.com/problem/oops'), // type 'A weird thing happened', // title 500, // status 'It looks like the server has goofed again', // detail new Uri('http://example.com/problems/1f9a'), // instance [ // extensions 'server' => 'workerbee01.example.com', 'auth' => 'foobar' ] ); echo json_encode($problem);
分页工厂
use Zend\Diactoros\ServerRequestFactory; $request = ServerRequestFactory::fromGlobals( $_SERVER, \Caridea\Http\QueryParams::getFromServer(), // instead of $_GET ); $factory = new \Caridea\Http\PaginationFactory(); // say the Query was ?count=25&startIndex=1&sort=%2Bfoo&sort-bar // or maybe ?count=25&start=0&sort=%2Bfoo,-bar // or one of many other formats for this type of pagination settingns $pagination = $factory->create($request, 'sort'); $pagination->getMax(); // 25 $pagination->getOffset(); // 0 $pagination->getOrder(); // ['foo' => true, 'bar' => false]
接受类型
// say the HTTP_ACCEPT field is text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 $types = new \Caridea\Http\AcceptTypes($_SERVER); $types->preferred(['application/xml', 'application/json']); // returns application/xml
辅助特性
现在有两个特性可用,JsonHelper
和MessageHelper
。这些特性可以被控制器类或分发器中间件使用。
第三方
JsonHelper
和MessageHelper
特性(以及它们的单元测试)已从Labrys库迁移到PHP,并遵循兼容的Apache 2.0许可证。