首页 > 解决方案 > 如何从另一个服务器scala调用rest API

问题描述

我是斯卡拉的新手。目前,要创建休息 API,我正在使用喷雾。现在我想从另一台服务器使用 API。我在 UI 的每个按键上都调用这个 API。如果用户继续输入并且前一个请求处于挂起状态,我将使用 AbortController 中止请求。为了满足其他服务器请求,我使用的是 spray-client。是这样的:

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 给出响应然后终止连接。在这里终止时它有时会闲置并且不接受新连接。

有没有其他方法可以做到这一点?

标签: scalasprayspray-client

解决方案


您可以使用 akka http 客户端创建休息请求。你可以在这里看到详细的例子


推荐阅读