caridea/http

一个小型的HTTP工具库

3.0.0 2018-01-14 17:35 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:41:59 UTC


README

Caridea是一个微型的PHP应用程序库。这个小巧的家伙是当你只需要一些帮助而不需要完整框架时使用的。

这是它的HTTP组件。它包括用于处理PSR-7 HTTP请求和响应的小工具,包括

  • 实现了RFC 7807,"HTTP API的问题详情"。
  • 一个解析请求中常见分页参数的工具
  • 一个正确解析具有相同名称多个参数的查询字符串的工具
  • 一个确定客户端首选接受的MIME类型的工具

Packagist Build Status Scrutinizer Code Quality Code Coverage Documentation Status

安装

您可以使用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-1PSR-2PSR-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

辅助特性

现在有两个特性可用,JsonHelperMessageHelper。这些特性可以被控制器类或分发器中间件使用。

第三方

JsonHelperMessageHelper特性(以及它们的单元测试)已从Labrys库迁移到PHP,并遵循兼容的Apache 2.0许可证。