laravel-response icon indicating copy to clipboard operation
laravel-response copied to clipboard

关于版本升级问题汇总

Open jiannei opened this issue 4 years ago • 5 comments

为了响应号召,最近做了些向下兼容 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 后重新安装解决)

jiannei avatar Nov 03 '21 05:11 jiannei

版本升级说明:

# 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 # 可选

jiannei avatar Nov 12 '21 14:11 jiannei

"Cannot construct an instance of HttpStatusCodeEnum using the value (integer) 500102. 请问这是什么原因呢

blackcocwhite avatar Jul 19 '22 08:07 blackcocwhite

"Cannot construct an instance of HttpStatusCodeEnum using the value (integer) 500102. 请问这是什么原因呢

500102 似乎在 HttpStatusCodeEnum 没有定义?

jiannei avatar Jul 19 '22 13:07 jiannei

"Cannot construct an instance of HttpStatusCodeEnum using the value (integer) 500102. 请问这是什么原因呢

500102 似乎在 HttpStatusCodeEnum 没有定义?

不是的,好像跟 response.php 配置项里 enum 指定有关,指定的是需要是 App\Enums\ResponseCodeEnum 才可以,包括本地化都才可以生效

blackcocwhite avatar Jul 19 '22 16:07 blackcocwhite

请教一下, 我在配置文件中更改了响应格式,为何没有生效呢?

blackcocwhite avatar Jul 25 '22 04:07 blackcocwhite

可否增加自定义公共字段返回,比如说request_id 或者time 之类的?

lotussha avatar Nov 04 '22 10:11 lotussha

可否增加自定义公共字段返回,比如说request_id 或者time 之类的?

新开 issue 讨论

jiannei avatar Dec 27 '22 05:12 jiannei

给个curd的标准化示例吧,醉了,脑袋好晕啊,完全不知道如何下手

weicome avatar Sep 06 '23 09:09 weicome

给个curd的标准化示例吧,醉了,脑袋好晕啊,完全不知道如何下手

看下项目中的例子 https://github.com/jiannei/laravel-api-starter/blob/0bf845374abf78f9de12acab680f119d8a3769e1/app/Http/Controllers/UsersController.php#L11

jiannei avatar Sep 06 '23 09:09 jiannei

API统一异常处理怎么写呀,验证器和各种包抛出的异常没有走这个标准的响应格式,怎么拦截为统一的标准格式

weicome avatar Sep 07 '23 15:09 weicome

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'
       ],
   ],

HelplessMan avatar Oct 22 '23 07:10 HelplessMan

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,并提供复现步骤

jiannei avatar Oct 23 '23 01:10 jiannei