Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

【开源自荐】Graceful Reponse——极致优雅地处理SpringBoot接口的异常和返回值 #2648

Closed
feiniaojin opened this issue Nov 17, 2023 · 1 comment

Comments

@feiniaojin
Copy link

feiniaojin commented Nov 17, 2023

推荐项目

  • 类别:Java
  • 项目标题:一个注解为SpringBoot接口提供统一返回值封装、全局异常处理、异常与错误码映射
  • 项目描述:这是一个为SpringBoot接口开发者提供的研发提速通用组件,可以用来优化Controller接口的代码,使代码更直观更简洁。Controller层的代码为了以统一的格式进行返回,基本上每个接口都需要手工创建Response对象,并为其设置状态码和数据,非常繁琐。Graceful Response一站式完成统一返回值封装、全局异常处理、异常与错误码映射等功能,使用户极大地减少了重复无意义的代码。
  • 亮点:

零学习成本,maven引入之后,只需要在启动类加入@EnableGracefulResponse注解即可开启;

功能全面,注解开启后即可拥有统一返回值封装、全局异常处理、异常与错误码映射等功能;

兼容性强,支持SpringBoot 2.x和3.x版本,兼容Swagger等API文档管理工具;

生产环境验证,该项目已在京东内部多个项目中使用。

  • 示例代码:(可选)
    引入Graceful Reponse前的Controller代码:
public class Controller {
    
    @GetMapping("/query")
    @ResponseBody
    public Response query(Parameter params) {
        Response res = new Response();
        try {
            //1.校验params参数,非空校验、长度校验
            if (illegal(params)) {
                res.setCode(1);
                res.setMsg("error");
                return res;
            }
            //2.调用Service的一系列操作
            Data data = service.query(params);
            //3.将操作结果设置到res对象中
            res.setData(data);
            res.setCode(0);
            res.setMsg("ok");
            return res;
        } catch (Exception e) {
            //3.异常处理:一堆丑陋的try...catch,如果有错误码的,还需要手工填充错误码
            res.setCode(1);
            res.setMsg("error");
            return res;
        }
    }
}

在启动类中使用注解开启:

@EnableGracefulResponse
@SpringBootApplication
public class ExampleApplication {
    public static void main(String[] args) {
        SpringApplication.run(ExampleApplication.class, args);
    }
}

引入Graceful Reponse后的Controller代码:

public class Controller {
    
    @GetMapping("/query")
    @ResponseBody
    public Data query(Parameter params) {
            Data data = service.query(params);
           return data;
    }
}

其中,异常处理、返回值的封装全部交给Graceful完成了,Controller代码非常简洁。

  • 截图:(可选)gif/png/jpg

  • 后续更新计划:
    目前Graceful Reponse的功能已经相当完善,基本已经覆盖SpringBoot Web接口开发的各种场景,未来会根据用户提的Issue进行功能迭代。

@521xueweihan
Copy link
Owner

您推荐的项目,已成功发布HelloGitHub 第 92 期,并把您添加到了贡献者列表中。

更多详情尽在:

最后,欢迎继续推荐如此优秀的项目、告诉其他小伙伴加入到 HelloGitHub 项目中,没有 star 本项目的请 star 一下。谢谢 🙏

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants