【发布时间】:2020-07-11 18:50:24
【问题描述】:
我正在尝试使用 Spring boot 开发示例 Rest API 应用程序来测试我的 java 客户端库(这是 JS 客户端的转换)。 Java 客户端执行一些异步任务并以回调的形式返回响应。
这是我如何从示例应用程序的服务中调用它的示例。
@Async
public void initializeUser(InitRequest initRequest) {
String BASE_URL = "http://sample_url";
client.initUser(BASE_URL, initRequest, new ResponseCallback<InitRequest>() {
@Override
public void onSuccess(@NonNull InitRequest arg0) {
// Return arg0 to controller
System.out.println("User Initialized: " + arg0.getId());
}
@Override
public void onError(@NonNull ResponseBody error) {
// Return error to controller
System.out.println("User Initialize failed");
}
@Override
public void validationError(@NonNull String arg0) {
// return validationError to controller
// TODO Auto-generated method stub
}
});
}
这里的 initUser 是在我的客户端中实现的方法。当我从我的控制器调用此方法时。控制器在实际请求完成之前返回,我无法在邮递员中看到任何响应。
这是一个控制器方法。
@RequestMapping(method=RequestMethod.POST, value = "/init" )
public void initUser( @RequestBody InitRequest initRequest) {
experimentServices.initializeUser(initRequest);
// wait for request to finish and send response to user
}
就像在 javascript 中一样,我可以使用 promises 或 async/await 来等待服务给出响应,然后再返回给用户。
我想知道.....
1) 如何在 Java 中实现类似的功能? (服务将一些数据返回给控制器,然后作为对最终用户的响应)。
2) Java 方法需要特定的返回响应,而服务可能会给出错误、验证错误或成功响应对象。有没有办法在一个函数中正确处理所有这些?
任何链接或文档都会有所帮助。 谢谢
【问题讨论】:
标签: java spring spring-boot spring-rest