ejetar / laravel-api-response-formatter
一个简单快速的 🚀 库,根据用户输入的 Accept 标头显示各种格式的响应。该库目前可以显示 JSON、XML、CSV 和 YAML 格式的响应。
1.0.0
2020-07-03 16:53 UTC
Requires
- laravel/framework: ^7.17
- symfony/serializer: ^5.1
- symfony/yaml: ^5.1
Requires (Dev)
- orchestra/testbench: ~3.4|~3.5|~3.6|~3.7|~3.8|~4.0|~5.0
- phpunit/phpunit: ^9.0
- symfony/var-dumper: ~5.0
This package is auto-updated.
Last update: 2024-09-30 01:32:30 UTC
README
目录
关于
一个简单快速的 🚀 库,根据用户输入的 Accept 标头显示各种格式的响应。该库目前可以显示 JSON、XML、CSV 和 YAML 格式的响应。
工作原理
API 响应格式化包为开发者提供了一个名为 api-response-formatter 的中间件。此中间件接收响应并将其转换为用户请求的特定格式。
具体来说
- 读取 Accept 标头的内容以确定要向用户显示哪种响应格式。
- 将 Laravel 提供的原始响应内容转换为所需格式;
- 向用户显示响应;
它还提供了一个自定义的 ExceptionHandler,允许异常以您想要的格式抛出。此处理器的一个非常不错的技巧是,当路由是 /api/* 时,它强制响应以 JSON、CSV、YAML 或 XML 格式返回(如果没有通过 Accept 通知类型,则默认选择 JSON)。这可以防止 API 在某个失败点返回 HTML 错误。
示例 1
GET /api/v1/users
Accept: application/xml
输出
<?xml version="1.0" encoding="utf-8"?> <xml> <item> <id>30</id> <name>Guilherme</name> <surname>Girardi</surname> <email>guilhermeagirardi@gmail.com</email> <created_at>2019-04-24 20:34:03</created_at> <updated_at>2019-04-24 20:34:03</updated_at> </item> ... </xml>
示例 2
GET /api/v1/users
Accept: application/json
输出
[
{
"id": 30,
"name":"Guilherme",
"surname": "Girardi",
"email": "guilhermeagirardi@gmail.com",
"created_at": "2019-04-24 20:34:03",
"updated_at": "2019-04-24 20:34:03"
}
]
示例 3
GET /api/v1/users
Accept: text/csv
输出
id,name,surname,email,created_at,updated_at
30,Guilherme,Girardi,guilhermeagirardi@gmail.com,"2019-04-24 20:34:03","2019-04-24 20:34:03"
示例 4
GET /api/v1/users
Accept: application/x-yaml
输出
id: 30 name: Guilherme surname: Girardi email: guilhermeagirardi@gmail.com created_at: '2019-04-24 20:34:03' updated_at: '2019-04-24 20:34:03'
安装
- 首先运行:
composer require ejetar/laravel-api-response-formatter; - 在
config/app.php文件的providers数组中添加Ejetar\ApiResponseFormatter\Providers\AppServiceProvider::class; - 在
app/Exceptions/Handler.php中,将Illuminate\Foundation\Exceptions\Handler替换为Ejetar\ApiResponseFormatter\Exceptions\Handler; - 在
public/index.php中,将Illuminate\Http\Request::capture()替换为Ejetar\ApiResponseFormatter\Requests\Request::capture();
开始使用
要开始使用此包,非常简单,只需在您的 routes/api.php 文件中调用 Middlware api-response-formatter 即可。
如下例所示
Route::middleware(['cors', 'api-response-formatter'])->prefix('/v1')->name('api.')->group(function() { Route::prefix('users')->name('users.')->group(function () { Route::get('me', 'UsersController@me')->name('me'); }); });
变更日志
目前没有...
贡献
为这个美妙的项目做出贡献,我们很高兴能和你一起。让我们帮助自由软件社区。我们邀请你添加新功能,进行纠正,报告错误,以及任何其他形式的支持。别忘了在这个存储库中星标!😀
许可
此库是开源软件,许可协议为 MIT。