Как простой клиент обрабатывает ответ CompletableFuture от асинхронного веб-сервиса RESTful? - PullRequest
0 голосов
/ 10 января 2019

Есть много примеров асинхронных загрузочных веб-сервисов RESTful Spring, все они о CompletableFuture:

@RestController
public class TestController {

  private UserService userService;

  public TestController(UserService userService) {
    this.userService = userService;
  }

  @RequestMapping(value = "test")
  public @ResponseBody CompletableFuture<User> test(@RequestParam(value = "email", required = true) String email) throws InterruptedException {
    return userService.findByEmail(email).thenApplyAsync(user -> {
      return user;
    })
  }  
}

Но мой вопрос: что получит клиент вместо CompletableFuture, предположим, что это просто почтальон или браузер? Я знаю, что такое CompletableFuture, и знаю, как с ним обращаться, но внутри моего Java-кода, поэтому мне любопытно,

  1. что получит простой клиент (который понятия не имеет ни о java ни о CompletableFuture)
  2. Предположим, что сервер вычислит результат за 5 минут, поэтому, КОГДА клиент получит его? Асинхронный означает немедленно вернуться назад, а затем получить обратный вызов. Я знаю о CompletableFuture.get () (да, это блокировка, я знаю), но опять же только Java знает, как получить результат от CompletableFuture

Так, пожалуйста, поясните, как это действительно работает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...