![](/img/trans.png)
[英]Spring rest api why does data type getting changed in the response from rest api call
[英]Spring : call REST API after receiving response from another REST API
我有一个控制器调用 webservice 来启动批处理作业,当返回结果时,它应该根据这个结果调用另一个 REST API。 然后它应该等待新结果,并将第二个结果返回给用户:
@RestController
public class LaunchController {
@PostMapping(path = "/launch", consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<LaunchResult> launch(@Valid @RequestBody LaunchParams params) {
// in launch() I call the first REST API
LaunchResult result = myService.launch(params);
// here I need to call another REST API
AnotherResult result2 = callAnotherWebAPIBasedOnThisResult(result);
return ResponseEntity.ok(result2);
}
现在我想知道像这样(同步)和所有在一个控制器中这样做是一种很好的做法吗? 存在其他方法吗?
将端点转换为异步端点的决定取决于以下几个因素:
如果您的回答是肯定的,那么最好将端点转换为异步端点,并在包括批处理在内的所有进程完成后向用户更新详细信息。 最好不要让用户等待响应。 当您处理大量数据并处理这些数据所需的处理时,非阻塞请求是有意义的。 此外,通过使此请求异步,您将更好地控制处理阶段并为用户提供更好的统计信息,以防任何处理阶段导致失败。 例如,批处理作业可能会失败,或者第二个 rest api 调用可能会导致错误。
您的控制器非常好,因为它内部没有任何应用程序逻辑,它实际上调用了服务方法。 但它缺乏异常处理。 您可以使用 try catch 块或 throws 关键字捕获适当的异常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.