wamesk/laravel-api-response

Laravel API 响应助手。

1.2.1 2023-11-24 10:27 UTC

This package is auto-updated.

Last update: 2024-09-24 12:05:08 UTC


README

Laravel 包,用于轻松格式化 API 响应

安装

composer require wamesk/laravel-api-response

用法

对于基本响应,使用类并调用 response() 函数,并传递所需的状态码 (默认 200)

此函数本身不会发送任何数据,该函数用于最后生成响应并设置状态码。

用法

return ApiResponse::response(201);

响应

{
    "data": null,
    "code": null,
    "errors": null,
    "message": null
}

对于异常,使用 exception() 函数并传递整个 Exception;

它将检查您的 .env 文件,如果您已启用 APP_DEBUG。如果为真,它将使用 dd() php 函数转储异常。如果为假,它将返回带有自定义消息的响应。自定义消息包含文件和行信息。

您可以使用除 response() 之外的所有其他功能。

用法

try {
    // code
} catch (\Exception $exception) {
    return ApiResponse::exception($exception);
}

响应

{
    "data": null,
    "code": null,
    "errors": null,
    "message": "Exception found in file C:\\projects\\project\\app\\Http\\Controllers\\v1\\UserController.php on line 33"
}

您也可以在响应函数之前添加 message() 函数来传递消息。

用法

return ApiResponse::message('Hello')->response(201);

响应

{
  "data": null,
  "code": null,
  "errors": null,
  "message": "Hello"
}

您可以使用 code() 函数传递内部代码,这有助于您在发生错误时找到响应。

return ApiResponse::code('1.2')->message('Hello')->response(201);

响应

{
  "data": null,
  "code": "1.2",
  "errors": null,
  "message": "Hello"
}

如果您未使用 message() 函数但使用 code() 函数,它将尝试将您的代码转换为消息。

您还可以将翻译的前缀作为第二个参数设置 (默认为 'api')

return ApiResponse::code('1.2', 'user')->response(201); // return "message": "user.1.2" as in Response example

return ApiResponse::code('1.2')->response(201); // When not provided second parameter it will use default and return "message": "api.1.2"

响应

{
  "data": null,
  "code": "1.2",
  "errors": null,
  "message": "user.1.2"
}

当不提供第二个参数时

{
  "data": null,
  "code": "1.2",
  "errors": null,
  "message": "api.1.2"
}

您可以使用 data() 函数传递数据。

return ApiResponse::data(['id' => 1, 'name' => 'Jhon Jhonson'])->code('1.2')->message('Hello')->response(201);

响应

{
  "data": {
    "id": 1,
    "name": "Jhon Jhonson"
  },
  "code": "1.2",
  "errors": null,
  "message": "Hello"
}

如果您想通知前端一些错误,可以使用 errors() 函数。

return ApiResponseDev::errors(['email' => 'Email is required'])->response(201);

响应

{
  "data": null,
  "code": null,
  "errors": {
    "email": "Email is required"
  },
  "message": null
}

如果您需要在 API 中使用分页,可以使用 collection() 函数而不是 data() 函数。您可以通过传递分页数据来使用此函数,并且您还可以传递资源以获得更好的数据格式 (资源不是必需的)

$users = User::paginate(10);

return ApiResponse::collection($users, UserResource::class)->code('1.2')->message('Hello')->response(201);

响应

{
    "data": [
        {
            "id": 1,
            "name": "Jhon Jhonson"
        },
        {
            "id": 2,
            "name": "Patrick Jhonson"
        }
    ],
    "links": {
        "first": "https://:8888/api/v1/test?page=1",
        "last": "https://:8888/api/v1/test?page=2",
        "prev": null,
        "next": "https://:8888/api/v1/test?page=2"
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 3,
        "links": [
            {
                "url": null,
                "label": "pagination.previous",
                "active": false
            },
            {
                "url": "https://:8888/api/v1/test?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": "https://:8888/api/v1/test?page=2",
                "label": "2",
                "active": false
            },
            {
                "url": "https://:8888/api/v1/test?page=3",
                "label": "3",
                "active": false
            },
            {
                "url": "https://:8888/api/v1/test?page=2",
                "label": "pagination.next",
                "active": false
            }
        ],
        "path": "https://:8888/api/v1/test",
        "per_page": 2,
        "to": 2,
        "total": 6
    },
    "code": "1.2",
    "errors": null,
    "message": "Hello"
}