这是我们要检索的对象:
// Lombok annotated
@Getter
@Setter
@ToString(callSuper = true)
public class GetTransactionsResponse {
public String name;
public List<Transaction> list;
}
我们有一个具有元数据的对象和一个对象列表。
我们尝试在如下方法中使用spring的restTemplate:
public GetTransactionsResponse getTransactions(String token, Request request) {
var requestEntity = RequestEntity
.get(externalApiClient.getTransactionsPath())
.header(HttpHeaders.AUTHORIZATION, token)
.build();
return handleCall(requestEntity, GetTransactionsResponse.class);
}
private <T> T handleCall(RequestEntity<?> requestEntity, Class<T> clazz) {
try {
var result = restTemplate.exchange(requestEntity, clazz).getBody();
log.info("method: handleCall - requestEntity: {} - clazz: {} - result: {}", requestEntity, clazz, result);
return result;
} catch (Exception e) {
throw e
}
}
因此,我们调用rest模板,但我们正在接收null。如果没有嵌套数据,前面的方法可以工作,但在使用嵌套对象时会以某种方式返回null
。我们使用rest模板错误吗?
发布于 2022-08-04 08:36:57
首先,验证您创建的Rest是否实际工作。用posman或ARC (高级Rest客户端)来测试它--一个用于chrome的插件,并确保您得到了想要的结果。如果它有效,那么您可以从任何Http客户端(包括Rest模板)向API发送请求。如果您的API工作,但从Rest模板调用它不能,那么您将知道问题在您的客户端,您可以尝试找出原因。但是,首先要验证Rest是否实际工作,并且不返回null。
https://stackoverflow.com/questions/73232633
复制相似问题