我正在使用的 API 必须键入响应成功响应 200 和错误响应 400 它们各自的响应正文中都有参数,但问题是无法获取它引发此异常的错误响应参数
public ResponseEntity<String> balanceInquiry(BalanceInquiryRequestDto balanceInquiryRequestDto) {
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setContentType(MediaType.APPLICATION_JSON);
httpHeaders.set("API-KEY", "5d6f54d4");
HttpEntity<BalanceInquiryRequestDto> request = new HttpEntity<BalanceInquiryRequestDto>(balanceInquiryRequestDto , httpHeaders);
ResponseEntity<String> postForEntity =
restTemplate.postForEntity(uri , request, String.class);
return postForEntity;
}
当响应正常时,它工作正常 200
我创建了一个小型的弹簧启动项目来展示您可以做什么。
首先是一个简单的服务,它在调用时会给我们一个错误:
@RestController
public class Endpoint {
@GetMapping("/error")
public ResponseEntity createError() {
ErrorDetails errorDetails = new ErrorDetails("some error message");
return ResponseEntity.status(400).body(errorDetails);;
}
}
要提取的错误详细信息类似于此示例中的错误详细信息:
@AllArgsConstructor
@Getter
@Setter
@ToString
@EqualsAndHashCode
public class ErrorDetails {
private String errorMessage;
}
然后是另一个终结点,其客户端调用失败的服务。它返回收到的错误详细信息:
@RestController
public class ClientDemo {
@Autowired
private RestTemplate restTemplate;
@GetMapping("/show-error")
public String createError() {
try{
return restTemplate.getForEntity("http://localhost:8080/error", String.class).getBody();
} catch(HttpClientErrorException | HttpServerErrorException ex) {
return ex.getResponseBodyAsString();
}
}
}
为了完成:
@SpringBootApplication
public class StackoverflowApplication {
public static void main(String[] args) {
SpringApplication.run(StackoverflowApplication.class, args);
}
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
导航到 http://localhost:8080/show-error 时,您会看到以下内容:
{
"errorMessage": "some error message"
}