1.
2.
3.
4.
5.
由此可见,通过这两个方法,我们就可以对响应体进行封装。
1.我们新建一个配置类,实现ResponseBodyAdvice 接口,具体代码如下:package com.xhw.demo.config; import com.github.pagehelper.Page; import com.xhw.demo.exception.ResponseErrorBody; import org.springframework.core.MethodParameter; import org.springframework.http.MediaType; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.server.ServerHttpRequest; import org.springframework.http.server.ServerHttpResponse; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice; import java.util.Date; import java.util.HashMap; import java.util.Map; @ControllerAdvice public class ResponseConfig implements ResponseBodyAdvice2.controller 类
package com.xhw.demo.controller;
import com.github.pagehelper.PageHelper;
import com.xhw.demo.entity.User;
import com.xhw.demo.exception.AuthException;
import com.xhw.demo.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.List;
@Controller
@ResponseBody
public class TestController {
@Autowired
private UserMapper userMapper;
@RequestMapping("/test01")
public String test01(){
throw new AuthException();
}
@RequestMapping(value = "/test02",method = RequestMethod.GET)
public String test02(){
return "test02";
}
@RequestMapping(value = "/test03",method = RequestMethod.GET)
public User test03(){
return new User(1,"user_001","法半夏");
}
@RequestMapping(value = "/test04",method = RequestMethod.GET)
public void test04(@RequestParam Integer param){
}
@RequestMapping(value = "/test05",method = RequestMethod.GET)
public List test05(){
PageHelper.startPage(1,10);
return userMapper.getUserList();
}
}
3. 实体User
package com.xhw.demo.entity;
import lombok.Data;
@Data
public class User {
private Integer id;
private String uid;
private String username;
public User(Integer id, String uid, String username) {
this.id = id;
this.uid = uid;
this.username = username;
}
}
4. 关于异常的类
4.1 自定义 AuthException
package com.xhw.demo.exception;
public class AuthException extends RuntimeException{
public AuthException(){}
public AuthException(String message){
super(message);
}
}
4.2 异常枚举类ExceptionEnum
package com.xhw.demo.exception;
public enum ExceptionEnum {
AUTH_EXCEPTION(1001,"接口认证失败"),
MISSING_REQUEST_PARAM_EXCEPTION(2001,"缺少请求参数"),
REQUEST_METHOD_NOT_SUPPORT(2002,"请求方法不支持");
private Integer code;
private String message;
ExceptionEnum(Integer code,String message){
this.code = code;
this.message = message;
}
public Integer getCode(){
return this.code;
}
public String getMessage() {
return this.message;
}
}
4.3 异常处理类
package com.xhw.demo.exception;
import org.springframework.web.HttpRequestMethodNotSupportedException;
import org.springframework.web.bind.MissingServletRequestParameterException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
@ControllerAdvice
@ResponseBody
public class ExceptionHandlerClass {
@ExceptionHandler(AuthException.class)
public ResponseErrorBody authExceptionHandler(){
return new ResponseErrorBody(ExceptionEnum.AUTH_EXCEPTION.getCode(),
ExceptionEnum.AUTH_EXCEPTION.getMessage());
}
@ExceptionHandler(MissingServletRequestParameterException.class)
public ResponseErrorBody missingParamHandler(){
return new ResponseErrorBody(ExceptionEnum.MISSING_REQUEST_PARAM_EXCEPTION.getCode(),
ExceptionEnum.MISSING_REQUEST_PARAM_EXCEPTION.getMessage());
}
@ExceptionHandler(HttpRequestMethodNotSupportedException.class)
public ResponseErrorBody requestMethodExceptionHandler(){
return new ResponseErrorBody(ExceptionEnum.REQUEST_METHOD_NOT_SUPPORT.getCode(),
ExceptionEnum.REQUEST_METHOD_NOT_SUPPORT.getMessage());
}
}
4.4 异常响应体类 ResponseErrorBody
package com.xhw.demo.exception;
public class ResponseErrorBody {
private Integer code;
private String message;
public ResponseErrorBody(Integer code, String message) {
this.code = code;
this.message = message;
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
5. UserMapper 类
package com.xhw.demo.mapper;
import com.xhw.demo.entity.User;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface UserMapper {
List getUserList();
}
6. UserMapper.xml
SELECT * FROM user



