umber/http

该软件包已被放弃,不再维护。没有建议的替代软件包。

一系列辅助 HTTP 类和实现。

2.0.1 2019-04-21 12:27 UTC

This package is auto-updated.

Last update: 2021-06-02 23:01:52 UTC


README

一系列围绕构建 HTTP 响应的轻量级抽象。

主分支 开发分支
Build Status Build Status

安装

可以通过 composer 通过 Packagist 安装此软件包

  • composer require umber/http

请将版本锁定为 2.x,因为 1.x 版本已不再支持。

使用方法

HTTP 响应由 HttpResponseInterface 的实现表示。这些类实现了 HTTP 响应的基本概念,可以用来编译一个有效的响应以供使用,或者可以转换为您选择的框架。

以下类是其核心

  • Umber\Http\Header\HttpHeaderInterface
  • Umber\Http\Response\HttResponseInterface

这些类的基实现存在

  • Umber\Http\Header\HttpHeader
  • Umber\Http\Response\HttpResponse
  • Umber\Http\Response\Type\JsonHttpResponse

目前该软件包支持的唯一格式是 json。这不是设计限制,而是因为该软件包最初是针对 API 设计的。对于处理 json,以下类可用

  • Umber\Http\Factory\Type\JsonHttpResponseFactoryInterface
  • Umber\Http\Factory\Type\JsonHttpResponseFactory
  • Umber\Http\Factory\Type\JsonHttpResponseGenerator
  • Umber\Http\Response\Type\JsonHttpResponse

还实现了以下 API 概念的抽象

  • 序列化
  • 分页

序列化

对于在 API 上下文中使用的请求,您可能需要调用序列化器。此软件包不提供序列化实现,但提供了一个与您选择的任何实现交互的抽象。

提供了一个定制的 HttpResponseInterface 用于序列化

  • Umber\Http\Serializer\Response\SerializerHttpResponse

此响应需要一个 HttpResponseSerializerInterface 实例以及任何序列化组。提供给响应的数据是要序列化的原始数据。当使用响应获取主体时,它将在该点序列化数据。

注意,当使用带有 HttpResponseSerializerInterfaceJsonHttpResponseGenerator 时,它将自动为您构造这些 SerializerHttpResponse 类。

序列化是即时完成的,因此不会在您的控制器中表现为性能损耗。这样做是为了使响应可以被拦截和更改,而不会浪费计算资源在序列化不需要的数据上。

分页

对于在 API 上下文中使用的请求,您可能需要调用分页器。此软件包不提供分页实现,但提供了一个与您选择的任何实现交互的抽象。

HttpResponseInterface 不应接受分页器作为其数据。但是,PaginatiorAwareHttpResponseInterface 会。

因此,以下响应是可用的(并应作为添加其他类型的示例使用)

  • Umber\Http\Response\Type\JsonPaginatorHttpResponse

支持分页器的响应应使用PagiantorResponseHelper,并遵循JsonPaginatorHttpResponse的示例。当调用分页器时,这些响应将初始化4个新头信息。

  • 分页-每页结果数
  • 分页-结果总数
  • 分页-结果总数
  • 分页-页数总数

当将响应提供给所选的*Factory时,应自动构建分页器感知的响应。由于*Generator通常使用*Factory,因此此类也接受分页器。例如,向JsonHttpResponseFactory(或JsonHttpResponseGenerator)提供分页器将返回一个JsonPaginatorHttpResponse

框架

目前我有一个用于Symfony的包,该包将所有类定义为服务。控制器可以返回HttpResponseInterface的实例,并且它们将被转换为Symfony的Request对象。

只需使用以下包

  • Umber\Http\Framewor\Symfony\UmberHttpBundle

配置是可选的,但为了定义序列化实现,请使用以下方法提供要使用的服务的链接。

umber_http:
  serializer: 'service.definition.reference.here'