报错
问题:接口中使用通用返回工具类作为返回对象时,报错:Could not find acceptable representation
22:10:55.562 [http-nio-14125-exec-2] ERROR c.l.f.w.e.GlobalExceptionHandler - [handleException,75] - 请求地址'/client/anonymous/login',发生系统异常.
org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation
at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:315)
代码
- controller 类
@RestController
@RequestMapping("/client")
public class ClientLoginController {
/**
* 登录方法
* @param loginBody 登录信息
* @return 结果
*/
@PostMapping("/anonymous/login")
public RestResponse login(@Validated @RequestBody LoginBody loginBody, HttpServletRequest request) {
//执行登录代码
// ...
return RestResponse.success("登录成功", null);
}
}
- 接口返回工具类
/**
* 操作消息提醒
*
*/
public class RestResponse<T> {
private static final long serialVersionUID = 1L;
/**
* 状态码
*/
private int code;
/**
* 提示内容
*/
private String msg;
/**
* 数据对象
*/
private T data;
public RestResponse(int code, String msg, T data) {
this.code = code;
this.msg = msg;
this.data = data;
}
/**
* 返回成功消息
*
* @param msg 返回内容
* @param data 数据对象
* @return 成功消息
*/
public static <T> RestResponse<T> success(String msg, T data) {
return new RestResponse<>(200, msg, data);
}
}
原因
通用返回工具类 RestResponse 中的 code
msg
data
属性没有 get()
、set()
方法
解决
给通用返回工具类 RestResponse 中的 code
msg
data
属性添加 get()
、set()
方法
package com.lvying.common.core.domain;
import com.lvying.common.constant.HttpStatus;
/**
* 操作消息提醒
*
*/
public class RestResponse<T> {
private static final long serialVersionUID = 1L;
/**
* 状态码
*/
private int code;
/**
* 提示内容
*/
private String msg;
/**
* 数据对象
*/
private T data;
public RestResponse(int code, String msg, T data) {
this.code = code;
this.msg = msg;
this.data = data;
}
/**
* 返回成功消息
*
* @param msg 返回内容
* @param data 数据对象
* @return 成功消息
*/
public static <T> RestResponse<T> success(String msg, T data) {
return new RestResponse<>(HttpStatus.SUCCESS, msg, data);
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
}