PHPackages                             jiannei/laravel-response - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. jiannei/laravel-response

ActiveLibrary

jiannei/laravel-response
========================

Laravel api response data format.

v6.0.1(1y ago)27952.4k↓27.7%33[1 issues](https://github.com/jiannei/laravel-response/issues)11MITPHPPHP ^8.1CI passing

Since Dec 1Pushed 6mo ago3 watchersCompare

[ Source](https://github.com/jiannei/laravel-response)[ Packagist](https://packagist.org/packages/jiannei/laravel-response)[ RSS](/packages/jiannei-laravel-response/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (10)Dependencies (4)Versions (60)Used By (11)

 laravel-response
==================

[](#-laravel-response-)

[简体中文](README.md) | [ENGLISH](README-EN.md)

> 为 Laravel 和 Lumen API 项目提供一个规范统一的响应数据格式。

> **🎉 最新更新：现已支持 Laravel 12！** 支持 Laravel 5.5 ~ 12.x 全版本，PHP 7.0 ~ 8.3。

[![Test](https://github.com/Jiannei/laravel-response/workflows/Test/badge.svg)](https://github.com/Jiannei/laravel-response/workflows/Test/badge.svg)[![Pest](https://camo.githubusercontent.com/2e4050a398f799602def48bc8184ea2da24f8943870fe29c7f1e4a64e7f3b698/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f54657374732d506573742d677265656e3f7374796c653d666c6174)](https://pestphp.com)[![PHPStan](https://camo.githubusercontent.com/81d8a3443f41be1d4c913f0339852291cc088ed3744b88b354bb2f577f120dcb/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048505374616e2d4c6576656c253230362d627269676874677265656e3f7374796c653d666c6174)](https://phpstan.org)[![Code Coverage](https://camo.githubusercontent.com/df995d5d680068acfe76c64fd49adea254ae3149871546a30b8957acbb88fa75/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f436f7665726167652d3130302532352d627269676874677265656e3f7374796c653d666c6174)](https://github.com/Jiannei/laravel-response)[![Pint](https://camo.githubusercontent.com/bd9f4fc145ca4a948e6fe232664ba21f6ae78ddf98835ff436145631119c8132/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f436f64652532305374796c652d50696e742d6f72616e67653f7374796c653d666c6174)](https://laravel.com/docs/pint)[![Latest Stable Version](https://camo.githubusercontent.com/5e18de314957d9b5d9894da8e5d90e6e2a80cb076e3df8b2d077e197abb1edbe/68747470733a2f2f706f7365722e707567782e6f72672f6a69616e6e65692f6c61726176656c2d726573706f6e73652f76)](https://packagist.org/packages/jiannei/laravel-response)[![Total Downloads](https://camo.githubusercontent.com/9217aeb67307d12f29c389019dc416f9f3546a10606c335972a8945ed9c776d7/68747470733a2f2f706f7365722e707567782e6f72672f6a69616e6e65692f6c61726176656c2d726573706f6e73652f646f776e6c6f616473)](https://packagist.org/packages/jiannei/laravel-response)[![Monthly Downloads](https://camo.githubusercontent.com/d1c916b06528de3bf00b5bd3e0e15fa30188169f648d646177a0d54acf45837b/68747470733a2f2f706f7365722e707567782e6f72672f6a69616e6e65692f6c61726176656c2d726573706f6e73652f642f6d6f6e74686c79)](https://packagist.org/packages/jiannei/laravel-response)[![License](https://camo.githubusercontent.com/292e1a5ff1fc509ad557ee7cb7599e3fe819d7d1d6db0f9636ee6657c7886c4f/68747470733a2f2f706f7365722e707567782e6f72672f6a69616e6e65692f6c61726176656c2d726573706f6e73652f6c6963656e7365)](https://packagist.org/packages/jiannei/laravel-response)

社区讨论文章
------

[](#社区讨论文章)

- [是时候使用 Lumen 8 + API Resource 开发项目了！](https://learnku.com/articles/45311)
- [教你更优雅地写 API 之「路由设计」](https://learnku.com/articles/45526)
- [教你更优雅地写 API 之「规范响应数据」](https://learnku.com/articles/52784)
- [教你更优雅地写 API 之「枚举使用」](https://learnku.com/articles/53015)
- [教你更优雅地写 API 之「记录日志」](https://learnku.com/articles/53669)
- [教你更优雅地写 API 之「灵活地任务调度」](https://learnku.com/articles/58403)

介绍
--

[](#介绍)

`laravel-response` 主要用来统一 API 开发过程中「成功」、「失败」以及「异常」情况下的响应数据格式。

实现过程简单，在原有的 `\Illuminate\Http\JsonResponse`进行封装，使用时不需要有额外的心理负担。

遵循一定的规范，返回易于理解的 HTTP 状态码，并支持定义 `ResponseEnum` 来满足不同场景下返回描述性的业务操作码。

概览
--

[](#概览)

- 统一的数据响应格式，固定包含：`code`、`status`、`data`、`message`、`error` (响应格式设计源于：[RESTful服务最佳实践](https://www.cnblogs.com/jaxu/p/7908111.html#a_8_2) )
- 你可以继续链式调用 `JsonResponse` 类中的所有 public 方法，比如 `Response::success()->header('X-foo','bar');`
- 合理地返回 Http 状态码，默认为 restful 严格模式，可以配置异常时返回 200 http 状态码（多数项目会这样使用）
- 支持格式化 Laravel 的 `Api Resource`、`Api  Resource Collection`、`Paginator`（简单分页）、`LengthAwarePaginator`（普通分页）、`Eloquent\Model`、`Eloquent\Collection`，以及简单的 `array` 和 `string`等格式数据返回
- 根据 debug 开关，合理返回异常信息、验证异常信息等
- 支持修改 Laravel 特地异常的状态码或提示信息，比如将 `No query results for model` 的异常提示修改成 `数据未找到`
- 支持配置返回字段是否显示，以及为她们设置别名，比如，将 `message` 别名设置为 `msg`，或者 分页数据第二层的 `data` 改成 `list`(res.data.data -&gt; res.data.list)
- 分页数据格式化后的结果与使用 `league/fractal` （DingoApi 使用该扩展进行数据转换）的 transformer 转换后的格式保持一致，也就是说，可以顺滑地从 Laravel Api Resource 切换到 `league/fractal`
- 内置 Http 标准状态码支持，同时支持扩展 ResponseEnum 来根据不同业务模块定义响应码(可选，需要安装 `jiannei/laravel-enum`)
- 响应码 code 对应描述信息 message 支持本地化，支持配置多语言(可选，需要安装 `jiannei/laravel-enum`)

安装
--

[](#安装)

支持 Laravel 5.5.\* ~ Laravel 12.\* 版本，自定义业务操作码部分依赖于 [jiannei/laravel-enum](https://github.com/Jiannei/laravel-enum)，需要先进行安装。

laravel 版本lumen 版本response 版本enum 版本PHP 版本要求5.5.\*5.5.\*~1.8~1.4^7.06.\*6.\*^2.0~1.4^7.27.\*7.\*^3.0^2.0^7.2.58.\*8.\*^4.0^3.0^7.39.\* - 10.\*9.\* - 10.\*^5.0^3.0^8.011.\*不支持^6.0^4.0^8.212.\*不支持^6.0^4.0^8.2> **📝 版本说明：**
>
> - Laravel 11+ 版本内置了更好的异常处理机制，可以省略手动配置异常处理步骤
> - Lumen 从 Laravel 9 开始不再维护，建议使用 Laravel 进行 API 开发
> - 推荐使用最新版本以获得更好的性能和安全性

```
# laravel 5.5

composer require jiannei/laravel-response "~1.8" -vvv
composer require jiannei/laravel-enum "~1.4" -vvv # 可选

# laravel 6.x

composer require jiannei/laravel-response "^2.0" -vvv
composer require jiannei/laravel-enum "~1.4" -vvv # 可选

# laravel 7.x

composer require jiannei/laravel-response "^3.0" -vvv
composer require jiannei/laravel-enum "^2.0" -vvv # 可选

# laravel 8.x

composer require jiannei/laravel-response "^4.0" -vvv
composer require jiannei/laravel-enum "^3.0" -vvv # 可选

# laravel 9.x - 10.x

composer require jiannei/laravel-response "^5.0" -vvv
composer require jiannei/laravel-enum "^3.0" -vvv # 可选

# laravel 11.x

composer require jiannei/laravel-response "^6.0" -vvv
composer require jiannei/laravel-enum "^4.0" -vvv # 可选

# laravel 12.x

composer require jiannei/laravel-response "^6.0" -vvv
composer require jiannei/laravel-enum "^4.0" -vvv # 可选
```

配置
--

[](#配置)

### Laravel

[](#laravel)

- 发布配置文件

```
$ php artisan vendor:publish --provider="Jiannei\Response\Laravel\Providers\LaravelServiceProvider"
```

- 格式化异常响应（Laravel 11+ 可省略这一步）

```
// app/Exceptions/Handler.php
// 引入以后对于 API 请求产生的异常都会进行格式化数据返回
// 要求请求头 header 中包含 /json 或 +json，如：Accept:application/json
// 或者是 ajax 请求，header 中包含 X-Requested-With：XMLHttpRequest;
