eonx-com / apiformats
用于处理不同格式的API请求和响应的软件包
Requires
- php: >=7.1
- ext-json: *
- doctrine/inflector: ^1.3
- eonx-com/utils: ^1.0 || ^2.0
- laminas/laminas-diactoros: ^2.1
- league/fractal: ^0.17.0 || ^0.19
- symfony/psr-http-message-bridge: ^1.0
- woohoolabs/yang: ^1.4
Requires (Dev)
- eonx-com/standards: ^0.3
- illuminate/http: ^5.8 || ^6.0
- illuminate/support: ^5.8 || ^6.0
- laravel/lumen-framework: ^5.8 || ^6.0
- phpmd/phpmd: 2.6.*
- phpstan/phpstan: ^0.11
- phpstan/phpstan-phpunit: ^0.11
- phpstan/phpstan-strict-rules: ^0.11
- phpunit/phpunit: ^8.5
- roave/security-advisories: dev-master
- sebastian/phpcpd: ^4.0
- squizlabs/php_codesniffer: ^3.0
- vlucas/phpdotenv: ^3.0
Suggests
- illuminate/http: To use the Laravel implementation
- illuminate/support: To use Laravel service provider
Provides
Replaces
- dev-master
- v1.0.6
- v1.0.5
- v1.0.4
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
- dev-dependabot/add-v2-config-file
- dev-dependabot/composer/phpmd/phpmd-2.10.star
- dev-dependabot/composer/symfony/psr-http-message-bridge-tw-2.1
- dev-dependabot/composer/doctrine/inflector-tw-2.0
- dev-dependabot/composer/woohoolabs/yang-tw-2.3
- dev-feature/github-actions
- dev-whitesource/configure
- dev-features/EP-543-as-a-developer-i-want-a-simple-wa
This package is auto-updated.
Last update: 2024-08-29 05:18:37 UTC
README
安装
使用Composer将软件包安装到您的项目中
composer require eoneopay/apiformats
格式
默认情况下,软件包处理JSON
(application/json)和XML
(application/xml, text/xml)格式。如果您想处理不同的格式或想实现自己的JSON
/XML
编码逻辑,您需要创建一个实现\EoneoPay\ApiFormats\Interfaces\RequestEncoderInterface
的编码器,并通过配置部分说明的Mime类型告诉软件包使用它。
集成
Laravel
要将软件包集成到您的Laravel或Lumen,您需要注册以下服务提供程序和中间件
- 服务提供程序:
\EoneoPay\ApiFormats\Bridge\Laravel\Providers\ApiFormatsServiceProvider
- 中间件:
\EoneoPay\ApiFormats\Bridge\Laravel\Middlewares\ApiFormatsMiddleware
这就完成了!您的应用程序现在可以轻松地以多种格式接收请求和生成响应。
格式化的API响应
如果您想自定义生成的响应(例如,状态码或头部信息),而不需要自己处理体编码,软件包提供了可以从控制器/中间件返回的\EoneoPay\ApiFormats\Bridge\Laravel\Responses\FormattedApiResponse
对象。FormattedApiResponse
通过其构造函数接受三个参数,如下所示
- $content (mixed): 可转换为数组的数组或对象
- $statusCode (int): 响应的状态码,默认为200
- $headers (array): 响应的头部信息,默认为空数组
配置
软件包的哲学是将编码器映射到它们可以通过数组处理的MIME类型列表
$formats = [ <RequestEncoderInterface> => [<mime_type>, <mime_type>, ...] ];
每个MIME类型可以是application/json
的确切名称,或者是一个用于匹配多个MIME类型的正则表达式,例如application/vnd.eoneopay.v[0-9]+\+json
。
Laravel
要配置应用程序中支持格式,创建一个包含formats
数组的api-formats.php
配置文件,使用编码器类作为键,关联的MIME类型数组作为值
// config/api-formats.php return [ 'formats' => [ JsonRequestEncoder::class => ['application/json'], XmlRequestEncoder::class => ['(application|text)/xml'], YourCustomerEncoder::class => ['you-custom-mime-type'] ] ];