@ResponseBody
- 类型:方法注解,类注解
- 位置:Controller方法上/类上
- 作用:将方法返回值直接响应,如果返回类型是 实体对象/集合,将会转化为JSON格式数据后再响应
- 说明:@RestController = @Controller + @ResponseBody
由于前端在访问不用的业务接口时,接口返回至前端的数据格式各种各样,对于整个项目来不便于管理而且很难维护。因此在项目开发过程中,我们应该设置一个统一的响应结果
统一响应结果
在Spring Boot框架中,Result类通常用于封装控制器(Controller)的响应结果。它是一种常见的设计模式,用于统一格式化返回给客户端的数据。
- Result类一般包含以下属性
- code:表示请求处理的状态码,通常为整数值。例如,0表示成功,其它非零值表示不同类型的错误
- message:对处理结果的简单描述或提示信息,可以根据需求提供更多更多上下文信息
- data:实际的响应数据对象,可以是单个对象或集合,用于向客户端返回具体的业务数据。
使用Result类的好处是可以在所有控制器方法中保持一致的响应格式。例如,在请求处理成功时,可以将数据封装到Result对象的data属性中,并设置code为0,message为空或可选的成功消息。而在处理失败时,可以设置相应的错误状态码和错误消息。
以下为一个Result类的示例(具体代码如下)
package com.example.POJO;
/**
* 统一响应结果封装类
*/
public class Result {
private Integer code;//1 成功 , 0 失败
private String msg; //提示信息
private Object data; //数据 date
// 无参构造
public Result() {
}
// 有参构造
public Result(Integer code, String msg, Object data) {
this.code = code;
this.msg = msg;
this.data = data;
}
// 设置get/set方法
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
// 三种情况的方法
public static Result success(Object data) {
return new Result(1, "success", data);
}
public static Result success() {
return new Result(1, "success", null);
}
public static Result error(String msg) {
return new Result(0, msg, null);
}
// 重写toString()方法,设置返回数据格式
@Override
public String toString() {
return "Result{" +
"code=" + code +
", msg='" + msg + '\'' +
", data=" + data +
'}';
}
}
Controller类具体代码为:
package com.example.Controller;
import com.example.POJO.Address;
import com.example.POJO.Result;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
/**
* 测试响应数据
*/
@RestController
public class ResponseController {
@RequestMapping("/hello")
public Result hello() {
System.out.println("Hello World ~");
//return new Result(1,"success","Hello World ~");
// 直接调用success()方法
return Result.success("Hello World ~");
}
@RequestMapping("/getAddr")
public Result getAddr() {
Address addr = new Address();
addr.setProvince("广东");
addr.setCity("深圳");
return Result.success(addr);
}
@RequestMapping("/listAddr")
public Result listAddr() {
List<Address> list = new ArrayList<>();
Address addr = new Address();
addr.setProvince("广东");
addr.setCity("深圳");
Address addr2 = new Address();
addr2.setProvince("陕西");
addr2.setCity("西安");
list.add(addr);
list.add(addr2);
return Result.success(list);
}
}
在postman中进行测试,分别查看返回结果:
1.
2.
3.