深入浅出Spring Boot接口
创始人
2024-02-29 18:45:29

如何优雅的写 Controller 层代码?
后端思想篇:设计好接口的36个锦囊!
瞧瞧,人家这后端API接口写得,那叫一个巴适~,再看看我的,像坨屎!
实战总结!18种接口优化方案的总结
SpringBoot 还在用 if 校验参数?那你真的太low了,老司机都是这么玩的!
7种方式,教你提升 SpringBoot 项目的吞吐量
Spring Boot 程序优化的 14 个小妙招!

统一返回格式

定义一个业务CODE枚举类

public enum ResultCodeEnum {SUCCESS(1, "成功"),//参数错误ILLEGAL_PARAMETER(10001, "非法参数");private Integer code;private String msg;ResultCodeEnum(Integer code, String msg) {this.code = code;this.msg = msg;}public Integer getCode() {return code;}public String getMsg() {return msg;}
}

定义统一返回类

public class R implements Serializable {private T data;private Integer code;private String msg;public static  R ok(T data) {R r = new R<>();r.setData(data);return r;}public static  R ok(ResultCodeEnum codeEnum, T data) {R r = new R<>();r.setData(data);r.setCode(codeEnum.getCode());r.setMsg(codeEnum.getMsg());return r;}public static  R fail(Integer code, String msg) {R r = new R<>();r.setCode(code);r.setMsg(msg);return r;}public static  R fail(ResultCodeEnum codeEnum) {R r = new R<>();r.setCode(codeEnum.getCode());r.setMsg(codeEnum.getMsg());return r;}//省略部分代码
}

定义一个封装注解

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Documented
public @interface Result {
}

ResponseBodyAdvice

Allows customizing the response after the execution of an @ResponseBody or a ResponseEntity controller method but before the body is written with an HttpMessageConverter.

两种思路,一种是beforeBodyWrite,另一种是 String

全局异常处理

@RestControllerAdvice

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@ControllerAdvice
@ResponseBody
public @interface RestControllerAdvice {@AliasFor(annotation = ControllerAdvice.class)String[] value() default {};@AliasFor(annotation = ControllerAdvice.class)String[] basePackages() default {};@AliasFor(annotation = ControllerAdvice.class)Class[] basePackageClasses() default {};@AliasFor(annotation = ControllerAdvice.class)Class[] assignableTypes() default {};@AliasFor(annotation = ControllerAdvice.class)Class[] annotations() default {};
}

@ExceptionHandler

//修饰方法
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ExceptionHandler {//接收一个Throwable子类的class数组Class[] value() default {};
}
    @ExceptionHandler(MethodArgumentNotValidException.class)

参数校验

性能优化

相关内容

热门资讯

北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...