laravel9 api返回格式哪种方式好点

从laravel9框架中下载之后可以看他有service目录有个例子

laravel9 api返回格式哪种方式好点

他是用异常接管来返回信息

但是我自己调用了他的 ApiResponse 里面success or fail

laravel9 api返回格式哪种方式好点
请问下哪种返回好一点 是有区别的吗 因为一个是异常接管 一个是直接返回

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案

适合不同的场景,调用 success 适合控制器直接返回,throw 出一个错误却可以在控制器之外的地方,比如控制器调用了其他类的方法,而不必再通过控制器返回信息

1年前 评论
讨论数量: 6

应该是和这个文章一样吧 博客:使用 Laravel 开发 API 时的前置准备 在异常中接管,实际上fail与抛出业务异常是一样的

// 自定义错误异常抛出
        if ($exception instanceof BusinessException) {
            return response()->json([
                'status'  => 'fail',
                'code'    => $exception->getCode(),
                'message' => $exception->getMessage(),
                'data'    => null,
                'error'  => null,
            ]);
        }
1年前 评论

适合不同的场景,调用 success 适合控制器直接返回,throw 出一个错误却可以在控制器之外的地方,比如控制器调用了其他类的方法,而不必再通过控制器返回信息

1年前 评论
DonnyLiu

看不同应用场景吧

1年前 评论

在 service 层使用 $this->throwBusinessException() 可以直接抛出异常,这样就不需要再通过控制器层进行返回了

1年前 评论

私以为,第一种不是很好,但是也有场景。

对于业务中的错误场景,个人推荐还是以异常的方式抛出去。

比如,在旧版的 php 中, throw 是一个语句,是不能用在一些特殊场景的,比如三元运算符的时候,这时候有一个方法封装用来抛出异常也挺不错。(8.0 开始,throw 是一个表达式了,可以用在前述场景下了)

但是,这种封装就造成了一种误解,比如在上面的代码里面,如果直接使用 throw,就很容易让人发现这是一个出点,在这里业务就结束,而上面那个方法名,可能还需要额外注意一下才知道,这里可能会退出。不过现在开发工具还是比较只能,上面的波浪线的意思就是说这个方法里面会抛出异常了,不过一般是基于 @throw 注释来分析的。

对于这种封装函数「其函数无返回值,函数内部始终会以抛出异常,或者其他方式终止运行的」,在 8.1 中新增了一个类型 never 来进行表述,比如下图,就会在 e 的后面告诉你这个后面的表达式不可达。

file

对于这种场景下,还是推荐直接抛出(throw)异常,这样更能直接的看出这里有一个出点,而不是进一步封装一个方法,在这个方法里面去抛异常之类的。

1年前 评论
巴啦啦臭魔仙 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!