ejetar/laravel-api-response-formatter

一个简单快速的 🚀 库,根据用户输入的 Accept 标头显示各种格式的响应。该库目前可以显示 JSON、XML、CSV 和 YAML 格式的响应。

1.0.0 2020-07-03 16:53 UTC

This package is auto-updated.

Last update: 2024-09-30 01:32:30 UTC


README

目录

关于

一个简单快速的 🚀 库,根据用户输入的 Accept 标头显示各种格式的响应。该库目前可以显示 JSON、XML、CSV 和 YAML 格式的响应。

工作原理

API 响应格式化包为开发者提供了一个名为 api-response-formatter 的中间件。此中间件接收响应并将其转换为用户请求的特定格式。

具体来说

  1. 读取 Accept 标头的内容以确定要向用户显示哪种响应格式。
  2. 将 Laravel 提供的原始响应内容转换为所需格式;
  3. 向用户显示响应;

它还提供了一个自定义的 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'

安装

  1. 首先运行: composer require ejetar/laravel-api-response-formatter;
  2. config/app.php 文件的 providers 数组中添加 Ejetar\ApiResponseFormatter\Providers\AppServiceProvider::class
  3. app/Exceptions/Handler.php 中,将 Illuminate\Foundation\Exceptions\Handler 替换为 Ejetar\ApiResponseFormatter\Exceptions\Handler
  4. 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。