bug前端请求返回报错之序列化问题
返回报错:
org.springframework.http.converter.HttpMessageNotWritableException: No converter found for return value of type
在使用微服务的过程中,调用直接报错,是因为我们在调用之后,参数返回是resultful,因此是需要转换成Json格式的,但是我们序列化的过程中,除了我们自己需要注意的spirng的相关注解@RestController 或@ResponseBody会自动序列化,这些都没有问题之后,遇到以下问题;
报错信息:
Resolved [org.springframework.http.converter.HttpMessageNotWritableException: No converter found for return value of type: class com.syh.response.common.Response]
返回类:Response
package com.rest.response;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author: syh
* @date: 2024/6/14
* @description: 类描述
*/
public class Response<T> {
/**
* 返回成功失败
*/
private Boolean result;
/**
* 返回的code
*/
private Integer code;
/**
* 返回的message
*/
private String message;
private T data;
public Response(ResponseStatusEnum responseStatusEnum) {
this.result = Boolean.TRUE;
this.data = data;
this.code = ResponseStatusEnum.SUCCESS.getCode();
this.message = ResponseStatusEnum.SUCCESS.getDesc();
}
public Response(T data) {
this.result = Boolean.TRUE;
this.data = data;
this.code = ResponseStatusEnum.SUCCESS.getCode();
this.message = ResponseStatusEnum.SUCCESS.getDesc();
}
public static <T> Response ok(T data) {
return new Response<>(data);
}
public static <T> Response ok() {
return new Response<>(ResponseStatusEnum.SUCCESS);
}
public Response(ResponseStatusEnum responseStatusEnum, String message) {
Response<Object> response = new Response<>();
response.result = Boolean.TRUE;
response.code = responseStatusEnum.getCode();
response.message = message;
}
public static Response fail(String message) {
Response<Object> response = new Response<>();
response.result = Boolean.FALSE;
response.code = ResponseStatusEnum.ERROR.getCode();
response.message = message;
return response;
}
public static Response error() {
Response<Object> response = new Response<>();
response.result = Boolean.FALSE;
response.code = ResponseStatusEnum.ERROR.getCode();
response.message = ResponseStatusEnum.ERROR.getDesc();
return response;
}
}
调用:
@RequestMapping("/user")
@RestController
public class UserController {
@Autowired
private PingAnStudyFeign pingAnStudyFeign;
@GetMapping("/login")
public Response login() {
System.out.println(1);
Object result = pingAnStudyFeign.getStudentById(666);
return Response.ok(result);
}
}
反思是什么原因导致报错,报错是在最后返回导致的,说明是在最终序列化的时候报错。之后这边查看,其他的类是可以返回的,最后锁定不能返回的原因是Response 类的成员变量没有get方法,导致,添加之后解决。