在Spray中将HTTP/REST请求转发到另一个REST服务器

Sou*_*nta 9 rest scala http akka spray

我有一堆现有的REST服务(下面的#1和#2),它们运行在仅在内部使用的不同端点上.现在我想使用Spray在外部公开一些REST API(API-1和API-2),因为这个外部端点还将提供一些额外的API(API-3,API-4).

是否有一种简单/推荐的方法将外部REST请求转发到我的新端点到现有REST端点?

在此输入图像描述

Ami*_*ico 4

听起来您想要的是拟议的proxyTo指令:

path("foo") {
  get {
    proxyTo("http://oldapi.example.com")
  }
}
Run Code Online (Sandbox Code Playgroud)

(或者更有可能的是,proxyToUnmatchedPath)。有一个问题需要解决:

https://github.com/spray/spray/issues/145

看起来有人一直在研究这个;这是 Spray fork 中的提交:

https://github.com/bthuillier/spray/commit/d31fc1b5e1415e1b908fe7d1f01f364a727e2593

但该提交似乎尚未出现在主 Spray 存储库中。您可以在问题页面询问其状态。

另外,这里有一篇来自 CakeSolutions 的博客文章,介绍如何手动进行代理:

http://www.cakesolutions.net/teamblogs/http-proxy-with-spray

该页面上的评论指出 Spray 有一个名为 的未记录的东西ProxySettings,并指出了以下测试:

https://github.com/spray/spray/blob/master/spray-can-tests/src/test/scala/spray/can/client/ProxySpec.scala

更新; Soumya 已在 Spray 用户 Google 群组上向 Spray 团队询问了此事:

https://groups.google.com/forum/#!topic/spray-user/MlUn-y4X8RE