PHPackages                             lsvking/lsvking-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. lsvking/lsvking-laravel-response

ActiveLibrary

lsvking/lsvking-laravel-response
================================

Laravel api response data format.

1.6.4(4y ago)17MITPHP

Since Dec 1Pushed 4y agoCompare

[ Source](https://github.com/LSvKing/lsvking-laravel-response)[ Packagist](https://packagist.org/packages/lsvking/lsvking-laravel-response)[ RSS](/packages/lsvking-lsvking-laravel-response/feed)WikiDiscussions main Synced yesterday

READMEChangelog (2)Dependencies (5)Versions (19)Used By (0)

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

[](#-laravel-response-)

[![Test](https://github.com/Jiannei/laravel-response/workflows/Test/badge.svg)](https://github.com/Jiannei/laravel-response/workflows/Test/badge.svg)[![StyleCI](https://camo.githubusercontent.com/31924e1677021a935ae80ec525c8bd0f3f21ea57d4168b5b1a7569fb703e9a48/68747470733a2f2f6769746875622e7374796c6563692e696f2f7265706f732f3331363936393436322f736869656c643f6272616e63683d6d61696e)](https://github.styleci.io/repos/316969462?branch=main)[![Latest Stable Version](https://camo.githubusercontent.com/75ff1714f1c252ce1a971a5ffaad024f75075b0ef5ab2550bc8bdcbbe423ca5c/687474703a2f2f706f7365722e707567782e6f72672f6a69616e6e65692f6c61726176656c2d726573706f6e73652f76)](https://packagist.org/packages/jiannei/laravel-response)[![Total Downloads](https://camo.githubusercontent.com/4ea0f540076b61d9960459fd9545af4001fabd9ed75f739a8715722a048c01b0/687474703a2f2f706f7365722e707567782e6f72672f6a69616e6e65692f6c61726176656c2d726573706f6e73652f646f776e6c6f616473)](https://packagist.org/packages/jiannei/laravel-response)[![Monthly Downloads](https://camo.githubusercontent.com/69f49a38d0c9616fae8163cc9f15b991ef261ed61dd0835c7a007378945f9cbf/687474703a2f2f706f7365722e707567782e6f72672f6a69616e6e65692f6c61726176656c2d726573706f6e73652f642f6d6f6e74686c79)](https://packagist.org/packages/jiannei/laravel-response)[![Latest Unstable Version](https://camo.githubusercontent.com/cb4905ee370368014e07e13791db2233bd50a4b8dee09233f26f0ab61bade7b5/687474703a2f2f706f7365722e707567782e6f72672f6a69616e6e65692f6c61726176656c2d726573706f6e73652f762f756e737461626c65)](https://packagist.org/packages/jiannei/laravel-response)[![License](https://camo.githubusercontent.com/54a543ef7819933f20a05fb471064c0f7b505ff6c08245d461feaa0626188633/687474703a2f2f706f7365722e707567782e6f72672f6a69616e6e65692f6c61726176656c2d726573706f6e73652f6c6963656e7365)](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 开发过程中「成功」、「失败」以及「异常」情况下的响应数据格式。

实现过程简单，在原有的 `response()->json()`进行封装，使用时不需要有额外的心理负担。

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

概览
--

[](#概览)

- 统一的数据响应格式，固定包含：`code`、`status`、`data`、`message`、`error`
- 内置 Http 标准状态码支持，同时支持扩展 ResponseCodeEnum 来根据不同业务模块定义响应码
- 响应码 code 对应描述信息 message 支持本地化，支持配置多语言
- 合理地返回 Http 状态码
- 根据 debug 开关，合理返回异常信息、验证异常信息等
- 支持格式化 Laravel 的 `Api Resource`、`Api  Resource Collection`、`Paginator`（简单分页）、`LengthAwarePaginator`（普通分页）、`Eloquent\Model`、`Eloquent\Collection`，以及简单的 `array` 和 `string`等格式数据返回
- 分页数据格式化后的结果与使用 `league/fractal` （DingoApi 使用该扩展进行数据转换）的 transformer 转换后的格式保持一致，也就是说，可以顺滑地从 Laravel Api Resource 切换到 `league/fractal`

安装
--

[](#安装)

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

```
$ composer require jiannei/laravel-enum -vvv
$ composer require jiannei/laravel-response -vvv
```

配置
--

[](#配置)

### Laravel

[](#laravel)

- 发布配置文件

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

- 格式化异常响应

在 `app/Exceptions/Handler.php` 中 引入 `use LSvKing\Response\Laravel\Support\Traits\ExceptionTrait;` 引入以后，对于 ajax 请求产生的异常都会进行格式化数据返回。

### Lumen

[](#lumen)

- 复制配置文件到 `vendor/jiannei/laravel-response/config/response.php`，到 `config/response.php`

```
cp vendor/jiannei/laravel-response/config/response.php config/response.php
```

- 加载配置

```
// bootstrap/app.php
$app->configure('response');
```

- 格式化异常响应

在 `app/Exceptions/Handler.php` 中 引入 `use LSvKing\Response\Laravel\Support\Traits\ExceptionTrait;`

在 `app/Http/Controllers/Controller.php` 中引入 `use LSvKing\Response\Laravel\Support\Traits\ExceptionTrait;`

- 注册服务容器

```
$app->register(\LSvKing\Response\Laravel\Providers\LumenServiceProvider::class);
```

使用
--

[](#使用)

扩展包本身提供了丰富的单元测试用例[tests](https://github.com/Jiannei/laravel-response/tree/main/tests) ，也可以直接查看测试用例。

或者查看相应的模板项目:

Laravel 版本 Api 开发初始化项目：[laravel-api-starter](https://github.com/Jiannei/laravel-api-starter)

Lumen 版本 Api 开发初始化项目：[lumen-api-starter](https://github.com/Jiannei/lumen-api-starter)

### 成功响应

[](#成功响应)

- 示例代码

```
