下面是“SpringBoot返回统一的JSON标准格式实现步骤”的完整攻略:
1. 为什么需要统一的JSON标准格式
在Web开发中,经常需要通过API接口返回JSON格式的数据,在返回JSON数据时大家的实现方式可能会有所不同,这就导致在调用不同接口时,返回的JSON格式可能会存在不同的字段、不同的格式等情况,这也会增加前端开发人员的工作难度。因此,为了简化前端开发人员的工作,统一JSON格式就显得非常必要。
一般情况下,我们需要定义一个统一的JSON格式,比如:
{
"code":0,
"message":"success",
"data":{}
}
其中,code表示返回码,0表示成功,非0表示失败;message表示返回信息,一般是success或failure;data表示返回的数据,可以是任意类型的数据,比如json object、json array、string等等。
2. 实现步骤
下面是实现统一的JSON标准格式的几个步骤:
1. 定义返回统一的JSON格式的类
在项目中创建一个返回统一的JSON格式的类,可以命名为ResultVO、CommonResult等,该类需要定义以下字段:
- code:返回码,可以为int类型或String类型。
- message:返回信息,一般为String类型。
- data:返回的数据,可以为任意类型。
示例代码如下:
public class ResultVO<T> {
private int code;
private String message;
private T data;
// getter 和 setter
}
2. 自定义统一的异常处理
在项目中创建统一的异常处理类,可以命名为GlobalExceptionHandler,在该类中定义相应的异常处理方法。处理URLNotFoundException、MethodArgumentNotValidException等常见异常,将异常信息封装到定义的统一JSON格式的类中返回给前端。
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(value = Exception.class)
@ResponseBody
public ResultVO handle(Exception e) {
if (e instanceof URLNotFoundException) {
// URL不存在异常处理
return ResultVOUtil.error(404, "URL Not Found");
} else if (e instanceof MethodArgumentNotValidException) {
// 参数校验异常处理
StringBuilder err = new StringBuilder();
BindingResult bindingResult = ((MethodArgumentNotValidException) e).getBindingResult();
for (ObjectError objectError : bindingResult.getAllErrors()) {
err.append(objectError.getDefaultMessage()).append(";");
}
return ResultVOUtil.error(400, err.substring(0, err.length() - 1));
}
// 其他异常处理
return ResultVOUtil.error(500, "Internal Server Error");
}
}
3. 相应的Controller里统一返回ResultVO
在Controller中在需要返回JSON数据的方法中使用统一的JSON格式类返回数据即可。如果是成功返回,则返回code=0,message=“success”,data中存放需要返回的数据;如果是失败返回,则返回code非0,message中存放错误信息。
@RestController
@RequestMapping("/demo")
public class DemoController {
@GetMapping("/{id}")
public ResultVO getDemo(@PathVariable("id") Integer id) {
Demo demo = demoMapper.selectById(id);
if (demo == null) {
throw new URLNotFoundException();
}
return ResultVOUtil.success(demo);
}
}
这样,在所有涉及到返回JSON数据的方法中,都可以返回统一的JSON格式,使前端开发人员更加方便地接收和处理数据。
3. 示例说明
下面是两个关于统一的JSON格式类的示例说明。
示例1:返回统一的JSON格式类
public class ResultVO {
// 错误码
private Integer code;
// 提示信息
private String msg;
//请求的具体内容
private Object data;
// getter和setter方法
}
示例2:自定义相应的异常处理
在GlobalExceptionHandler类中定义多个异常处理方法,以下是一个参数验证异常处理的示例:
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(value = MethodArgumentNotValidException.class)
@ResponseBody
public ResultVO handleBindException(MethodArgumentNotValidException ex) {
FieldError fieldError = ex.getBindingResult().getFieldError();
return ResultVOUtil.error(501, fieldError.getDefaultMessage());
}
}
在该示例中,当出现方法参数验证异常时,会调用handleBindException方法进行处理,返回code为501,msg为具体的错误提示信息。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot返回统一的JSON标准格式实现步骤 - Python技术站