SpringBoot定义优雅全局统一Restful API 响应框架四

kenx
• 阅读 210

如果没有看前面几篇文章请先看前面几篇

SpringBoot定义优雅全局统一Restful API 响应框架

SpringBoot定义优雅全局统一Restful API 响应框架二

SpringBoot定义优雅全局统一Restful API 响应框架三

目前我们好像似乎解决所有问题,达到了我们理想的效果如下

SpringBoot定义优雅全局统一Restful API 响应框架四

但是在业务错误返回时候不太理想如下

SpringBoot定义优雅全局统一Restful API 响应框架四

没有必要返回 reuqesterrorMsg

还有如果业务非常复杂的时候,会不会出现错误码分配使用混乱和重复问题这个问题应该如何避免和解决呢?

这个时候我想到 使用业务错误常量来代替错误码,这样更加见字识意, 进一步抽象错误常量公共接口模块

package cn.soboys.springbootrestfulapi.common.error;

import java.util.List;

/**
 * @author 公众号 程序员三时
 * @version 1.0
 * @date 2023/5/9 20:14
 * @webSite https://github.com/coder-amiao
 * 定义错误常量 代替错误码,避免业务复杂错误码分配重复等问题
 */
public interface CommonErrorConstant {
    /**
     * 公共错误码定义
     */
    public static final String InvalidRequest = "InvalidRequest";
    public static final String InvalidArgument = "InvalidArgument";
    public static final String NotFound = "NotFound";
    public static final String UnknownError = "UnknownError";
    public static final String OK = "OK";
    public static final String FAIL = "FAIL";



    /**
     * 其他自定义业务错误码
     */



}

通用错误码

package cn.soboys.springbootrestfulapi.common.error;

import cn.soboys.springbootrestfulapi.common.resp.ResultCode;

/**
 * @author 公众号 程序员三时
 * @version 1.0
 * @date 2023/5/2 21:36
 * @webSite https://github.com/coder-amiao
 */
public enum CommonErrorCode implements ResultCode {

    /**
     * 错误请求
     */
    INVALID_REQUEST(false, CommonErrorConstant.InvalidRequest, "Invalid request, for reason: "),
    /**
     * 参数验证错误
     */
    INVALID_ARGUMENT(false, CommonErrorConstant.InvalidArgument, "Validation failed for argument "),
    /**
     * 未找到资源
     */
    NOT_FOUND(false, CommonErrorConstant.NotFound, "Resource  not found."),
    /**
     * 未知错误
     */
    UNKNOWN_ERROR(false, CommonErrorConstant.UnknownError, "Unknown server internal error.");


    CommonErrorCode(Boolean success, String code, String message) {
        this.success = success;
        this.code = code;
        this.message = message;

    }

    /**
     * 响应是否成功
     */
    private Boolean success;
    /**
     * 响应状态码
     */
    private String code;
    /**
     * 响应信息
     */
    private String message;


    @Override
    public String getCode() {
        return code;
    }

    @Override
    public String getMessage() {
        return message;
    }

    @Override
    public boolean getSuccess() {
        return success;
    }


}

正常请求

SpringBoot定义优雅全局统一Restful API 响应框架四

错误请求

  1. 调整后的业务异常 SpringBoot定义优雅全局统一Restful API 响应框架四

  2. 调整未知错误异常

SpringBoot定义优雅全局统一Restful API 响应框架四

对应代码已经上传更新github SpringBoot定义优雅全局统一Restful API 响应框架四

在留一下一个思考问题,如果接口错误需要国际化应该如何实现?

如果你觉得对您有帮助关注公众号,程序员三时 我会给大家不定期分享热门技术,做开源项目,技术交流,面试,学习,分享自己入行多年一些感受和经验

点赞
收藏
评论区
推荐文章
京东云开发者 京东云开发者
11个月前
一站式统一返回值封装、异常处理、异常错误码解决方案—最强的Sping Boot接口优雅响应处理器 | 京东云技术团队
GracefulResponse是一个SpringBoot体系下的优雅响应处理器,提供一站式统一返回值封装、异常处理、异常错误码等功能。使用GracefulResponse进行web接口开发不仅可以节省大量的时间,还可以提高代码质量,使代码逻辑更清晰。
kenx kenx
12个月前
SpringBoot定义优雅全局统一Restful API 响应框架
假如现在有一个Java项目,老板让你做项目组长,定义项目基础框架,系统技术架构选型,你应该如何设计一个规范的统一的RestfulAPI响应框架呢思考目前项目开发,都是基于前后端分离模式开发的,基于后端模板引擎那一套,可能已经不适用一些项目开发流程,和当下开
kenx kenx
11个月前
SpringBoot定义优雅全局统一Restful API 响应框架三
我们目前已经设计出了,包含全局响应,异常错误响应进行了统一返回。但是错误内容我们设计的比较模糊统一,还可以进行细化这样更有利于定位错误当我们需要调用Http接口时,无论是在Web端还是移动端,都有可能遇到各种错误,例如参数缺失、类型错误、系统错误等。为了规
kenx kenx
11个月前
SpringBoot定义优雅全局统一Restful API 响应框架二
这里解决之前留下来的问题,当程序没有正常返回时候就是程序由于运行时异常导致的结果,有些异常我们可,能无法提前预知,不能正常走到我们return的R对象返回。这个时候该如何处理在SpringBoot中,可以使用@ControllerAdvice注解来启用全局
Stella981 Stella981
2年前
Spring Boot validator参数验证restful自定义错误码响应
关于springweb应用中关于如何使用 Bean _Validation_ _API_和hibernatevalidator的文章已经很多,本文就不再重复叙述,今天要介绍的重点是在SpringBootrestful服务中如何根据不同验证错误响应不同的自定义错误码。下面直接上代码。一、定义restful统一结果返回
Stella981 Stella981
2年前
Spring Boot @ControllerAdvice+@ExceptionHandler处理controller异常
需求:  1.springboot 项目restful 风格统一放回json  2.不在controller写trycatch代码块简洁controller层  3.对异常做统一处理,同时处理@Validated校验器注解的异常方法:  @ControllerAdvice注解定义全局异常处理类@ControllerAdvice
Wesley13 Wesley13
2年前
.NET Core AutoWrapper 自定义响应输出
前言AutoWrapper是一个简单可自定义全局异常处理程序和ASP.NETCoreAPI响应的包装。他使用ASP.NETCoremiddleware拦截传入的HTTP请求,并将最后的结果使用统一的格式来自动包装起来.目的主要是让我们更多的关注业务特定的代码要求,并让包装器自动处理HTTP响应。这可以在构建API时加快开发时间,同时为HTT
kenx kenx
11个月前
SpringBoot定义优雅全局统一Restful API 响应框架五
闲话不多说,继续优化全局统一RestfulAPI响应框架做到项目通用接口可扩展。如果没有看前面几篇文章请先看前面几篇这里解决上一篇留下问题如何实现接口错误国际化。还有上一篇错误提示也不是很友好我们可以在进一步抽象出通用异常接口。异常信息应由固定异常编码信息
kenx kenx
10个月前
SpringBoot定义优雅全局统一Restful API 响应框架六
闲话不多说,继续优化全局统一RestfulAPI响应框架做到项目通用接口可扩展。如果没有看前面几篇文章请先看前面几篇这里讲一讲最后的版本和需要修复的一些问题java@PostMapping("/add/UserApiCombo")publicRaddApi
kenx kenx
9个月前
SpringBoot定义优雅全局统一Restful API 响应框架完结撒花篇封装starter组件
之前我们已经,出了一些列文章。讲解如何封统一全局响应RestfulAPI。感兴趣的可以看我前面几篇文章(整个starter项目发展史)后续我萌生里新的想法,SpringBoot不是提供了自己的starter。我们也可以自定义starter吗,于是我定义了r