@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()方法,设置返回数据格式@Overridepublic 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.