Ale*_*Man 1 java spring-cloud netflix-feign spring-cloud-feign feign
我创建了一个 Feign 客户端 EmployeeServiceClient.java ,如下所示
EmployeeServiceClient.java
@FeignClient(name = "employeeclient", url = "https://internel.omnesys.org")
public interface EmployeeServiceClient {
@RequestMapping(method = RequestMethod.GET, value = "/v1/employees")
List<EmployeeDetails> getEmployeeDetails();
}
Run Code Online (Sandbox Code Playgroud)
员工详细信息.java
public class EmployeeDetails {
private Employee employee;
private String empId;
// getters and setters
}
Run Code Online (Sandbox Code Playgroud)
员工.java
public class Employee {
private String name;
private String firstName;
private String lastName;
private String city;
// getters and setters
}
Run Code Online (Sandbox Code Playgroud)
服务 https://internel.omnesys.org/v1/employees(这是由不同团队管理的 Intranet REST 服务)为我提供了如下所示的响应寿命
)}]',
[{"employee":{"name":"Emp1","firstName":"firstName1","lastName":"lastName1","city":"city1"},"empId":"empId123"},{"employee":{"name":"Emp2","firstName":"firstName2","lastName":"lastName2","city":"city2"},"empId":"empId456"}]
Run Code Online (Sandbox Code Playgroud)
我收到假装异常,因为服务响应)}]',在开头包含一个附加内容
我已要求服务团队删除这些无效字符,但他们说不可能删除它,因为它是为了其他要求而故意放置的,并要求我从我们这边处理它。
谁能帮我解决这个问题
我看到三个选项:
使用自定义配置自定义您的客户端,并提供您自己的解码器来处理疯狂的响应;)扩展ResponseEntityDecoder并添加您的特殊响应处理。
更改方法签名以返回 feign.Response 并自行处理:
Run Code Online (Sandbox Code Playgroud)@FeignClient(name = "employeeclient", url = "https://internel.omnesys.org") public interface EmployeeServiceClient { @RequestMapping(method = RequestMethod.GET, value = "/v1/employees") feign.Response getEmployeeDetails(); }
请注意:对于 2. 和 3.,根本不会有错误处理,您应该注意这一点
如果不选择第一个选项来隐藏解析和异常处理并确保当前方法签名,还可以考虑添加适配器。
| 归档时间: |
|
| 查看次数: |
20553 次 |
| 最近记录: |