feign返回父类对象,缺失子类对象
时间: 2023-07-01 12:28:56 浏览: 81
Feign 是一个基于 Java 的 HTTP 客户端,它允许您使用注解的方式来定义 HTTP 请求和响应的接口,在 Spring Cloud 微服务架构中广泛应用。关于您提到的问题,可能是由于 Feign 在反序列化返回对象时,无法正确地识别该对象的子类类型。
为了解决这个问题,您需要在 Feign 的请求接口中使用 `@RequestLine` 注解来指定请求的 HTTP 方法和路径,然后在返回类型中使用泛型来指定实际返回的类型。例如:
```java
public interface MyFeignClient {
@RequestLine("GET /api/your/path")
MyResponse<MyEntity> getMyEntity();
}
```
其中,`MyResponse` 是一个封装了 HTTP 响应结果的通用类,而 `MyEntity` 则是您具体的实体类,如果您的实体类有多个子类,那么您需要在 `MyResponse` 中添加一个字段来表示实际的子类类型。例如:
```java
public class MyResponse<T> {
private String type;
private T data;
// getter and setter methods
}
```
在这种情况下,您需要在服务端返回的 JSON 数据中包含一个 `type` 字段,用来表示实际的子类类型。然后在 Feign 客户端的 `MyResponse` 中解析该字段,并根据实际的子类类型来反序列化 `data` 字段。如果服务端返回的 JSON 数据中没有包含 `type` 字段,那么 Feign 将无法正确地识别对象的子类类型,从而导致缺失子类对象的问题。