Как вызвать rest API с другого сервера scala

Я новичок в скале. В настоящее время для создания остальных API я использую спрей. Теперь я хочу использовать API с другого сервера. Я вызываю этот API при каждом нажатии клавиши из пользовательского интерфейса. Я прерываю запрос с помощью AbortController, если пользователь продолжает печатать, а предыдущий запрос находится в состоянии ожидания. Чтобы выполнить другой запрос к серверу, я использую спрей-клиент. Что-то вроде этого:

def completeService(completeRequest: CompleteRequest): Future[HttpResponse] = {

  val pipeline: HttpRequest => Future[HttpResponse] = sendReceive ~> unmarshal[HttpResponse]
  val response: Future[HttpResponse] = pipeline(Post(someremoteUrl.concat("complete"), completeRequest)
   ~> addHeader("demo", "test"))
  response
}

Я могу получить доступ, используя этот код выше. И получаю ожидаемый ответ. Но дело требует времени. Он создает новое TCP-соединение и связывается с хостом, обращается к API, дает ответ, а затем разрывает соединение. Здесь при завершении он иногда простаивает и не принимает новое соединение.

Есть ли альтернативный способ сделать это?


person dharmesh singh    schedule 16.03.2020    source источник


Ответы (1)


Вы можете создать запрос на отдых, используя http-клиент akka. вы можете увидеть подробный пример здесь

person igx    schedule 17.03.2020
comment
Можем ли мы использовать Akka-Http-клиент со спреем? Поскольку оба имеют одинаковые модели (HttpMethods, HttpResponse,...) - person dharmesh singh; 19.03.2020
comment
@dharmeshsingh определенно да, просто добавьте библиотеку akka-http-spry-json https://doc.akka.io/docs/akka-http/current/common/json-support.html - person igx; 20.03.2020