Java 带有下一步或回滚的外部API调用
我需要实现以下功能: 该方法通过POST(创建操作)请求调用外部API。如果创建有效,下一步是在S3中创建一个bucket。如果第一步失败,整个方法应该抛出一个异常 我想到的是:Java 带有下一步或回滚的外部API调用,java,spring,spring-boot,Java,Spring,Spring Boot,我需要实现以下功能: 该方法通过POST(创建操作)请求调用外部API。如果创建有效,下一步是在S3中创建一个bucket。如果第一步失败,整个方法应该抛出一个异常 我想到的是: @PostMapping public ResponseEntity<?> foo(String name) { String requestEntity = //.... try { ResponseEntity resp = new RestTemplate()
@PostMapping
public ResponseEntity<?> foo(String name) {
String requestEntity = //....
try {
ResponseEntity resp =
new RestTemplate().exchange("http://localhost:8080/rest/someservice",
HttpMethod.POST, requestEntity, String.class);
if (resp.getStatusCode().is2xxSuccessful()) {
myBucket.makeBucket(requestEntity);
return new ResponseEntity<>(/*Some success message*/);
} else return new ResponseEntity<>(/*Some error message*/);
} catch (RestClientException ex) {
return new ResponseEntity<>(/*Some error message*/);
}
}
@PostMapping
公共响应属性foo(字符串名称){
字符串requestEntity=/。。。。
试一试{
反应性=
新建RestTemplate().exchange(“http://localhost:8080/rest/someservice",
HttpMethod.POST、requestEntity、String.class);
if(响应getStatusCode().is2xxSuccessful()){
makeBucket(requestEntity);
返回新的响应属性(/*一些成功消息*/);
}否则返回新的响应属性(/*一些错误消息*/);
}捕获(RestClientException例外){
返回新的响应属性(/*一些错误消息*/);
}
}
这是一个有效的解决方案,或者我应该以不同的方式来做,即使用
CompletableFuture
?它必须是同步的,因此此解决方案是有效的。CompleteableFuture将使其异步,这不是您想要的。此方法应将结果返回给调用方,因此它是同步的。在这种情况下,您不必使用任何异步方式。当前的方式是有效的。