微服务返回报错:No converter found for return value of type

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方法,导致,添加之后解决。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值