laravel-response
laravel-response copied to clipboard
关于版本升级问题汇总
为了响应号召,最近做了些向下兼容 laravel 版本的改动,版本发布较为频繁。由于没有及时更新文档,给使用该扩展的朋友造成了些困扰,希望大家能够谅解。
可以将版本升级的问题汇总到这里(麻烦备注说明下使用的扩展版本号和 Laravel 版本号)
近期大版本发布说明:https://github.com/Jiannei/laravel-response/releases/tag/v4.0.0
完善了一些功能,并且支持了更多 Laravel 版本 🎉 🎉 🎉
# Feature
- [变更]:data 中包含多条数据返回时,原先的配置项 `format.paginated_resource.data_field`变更为`format.fields.data.fields.data.alias`。
- [新增]:新的文档站点 -> https://docs.sinan.fun/packages/laravel-response.html ❤️
- [新增]:返回数据结构中的全部字段 status、code、message、error、data,以及 data 里面包含的 data 和 meta 中的 pagination 字段,名称都支持别名方式修改,或设置隐藏不返回。
- [新增]:成功状态返回 增加 `ok` 方法,可以方便 `success` 方法中 data 必须传空的场景。#31 ([e840b3f](https://github.com/Jiannei/laravel-response/commit/e840b3f14fa6ec6d5598c045a3a8356e4ba8f6ba))
- [新增]:可以通过配置`exception`项,来覆盖异常**默认**的 code和message。比如,将`\Symfony\Component\HttpKernel\Exception\NotFoundHttpException::class`异常的 message 设置为空字符串,来避免暴露数据模型信息。 #27
- [新增]:同时支持 laravel 5.5、laravel 6.x、laravel 7.x,以及最新的 laravel 8.x ☺️
现已知的问题包含有:
- ResourceCollection 结构缺少 data 层级问题:https://github.com/Jiannei/laravel-response/issues/56
- JsonResource 响应类型判断条件问题:https://github.com/Jiannei/laravel-response/pull/59 (问题是由于原先 Laravel 8 安装的 1.* 的版本,composer update 无法直接升级到 4.* 版本导致,可以 composer remove 后重新安装解决)
版本升级说明:
# 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 # 可选
"Cannot construct an instance of HttpStatusCodeEnum using the value (integer) 500102. 请问这是什么原因呢
"Cannot construct an instance of HttpStatusCodeEnum using the value (integer)
500102. 请问这是什么原因呢
500102 似乎在 HttpStatusCodeEnum 没有定义?
"Cannot construct an instance of HttpStatusCodeEnum using the value (integer)
500102. 请问这是什么原因呢500102 似乎在 HttpStatusCodeEnum 没有定义?
不是的,好像跟 response.php 配置项里 enum 指定有关,指定的是需要是 App\Enums\ResponseCodeEnum 才可以,包括本地化都才可以生效
请教一下, 我在配置文件中更改了响应格式,为何没有生效呢?
可否增加自定义公共字段返回,比如说request_id 或者time 之类的?
可否增加自定义公共字段返回,比如说request_id 或者time 之类的?
新开 issue 讨论
给个curd的标准化示例吧,醉了,脑袋好晕啊,完全不知道如何下手
给个curd的标准化示例吧,醉了,脑袋好晕啊,完全不知道如何下手
看下项目中的例子 https://github.com/jiannei/laravel-api-starter/blob/0bf845374abf78f9de12acab680f119d8a3769e1/app/Http/Controllers/UsersController.php#L11
API统一异常处理怎么写呀,验证器和各种包抛出的异常没有走这个标准的响应格式,怎么拦截为统一的标准格式
在 config/response.php 配置中 exception 数组定义 redis 限流异常类不起作用哈... 这种的是需要自己使用render来实现么..
另外在中间件设置了 Accept 参数
laravel version: 10.28.0
@jiannei
'exception' => [
\Illuminate\Validation\ValidationException::class => [
'code' => 422,
],
\Illuminate\Auth\AuthenticationException::class => [
],
\Symfony\Component\HttpKernel\Exception\NotFoundHttpException::class =>[
'message' => '',
],
\Illuminate\Database\Eloquent\ModelNotFoundException::class => [
'message' => '',
],
\Illuminate\Http\Exceptions\ThrottleRequestsException::class => [
'code' => 429,
'message' => 'Too Many Requests'
],
],
在
config/response.php配置中exception数组定义 redis 限流异常类不起作用哈... 这种的是需要自己使用render来实现么..另外在中间件设置了 Accept 参数
laravel version: 10.28.0@jiannei
'exception' => [ \Illuminate\Validation\ValidationException::class => [ 'code' => 422, ], \Illuminate\Auth\AuthenticationException::class => [ ], \Symfony\Component\HttpKernel\Exception\NotFoundHttpException::class =>[ 'message' => '', ], \Illuminate\Database\Eloquent\ModelNotFoundException::class => [ 'message' => '', ], \Illuminate\Http\Exceptions\ThrottleRequestsException::class => [ 'code' => 429, 'message' => 'Too Many Requests' ], ],
新开 issue,并提供复现步骤