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

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

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

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

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

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

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
最佳答案

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

2年前 评论
讨论数量: 6

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

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

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

2年前 评论
DonnyLiu

看不同应用场景吧

2年前 评论

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

2年前 评论

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

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

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

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

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

file

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

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

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