Proxy 如何将部分请求转发到Clojure中的另一台服务器? 总结
我正在开发一个服务器,它类似于Clojure中的代理,以基座服务+lein为基础:Proxy 如何将部分请求转发到Clojure中的另一台服务器? 总结,proxy,clojure,leiningen,http-kit,pedestal,Proxy,Clojure,Leiningen,Http Kit,Pedestal,我正在开发一个服务器,它类似于Clojure中的代理,以基座服务+lein为基础: 接收请求 将请求转发到外部服务器 向服务器发出多个请求以提供更大的json,并作为单个请求返回到客户端 编写代码很容易,而且有很多关于如何为路线提供服务的资源, 然而,我找不到任何简单的方法,如何将Clojure底座休息服务与转发路线结合起来 例子 客户端调用[GET]/billing=>proxy clojure服务器 代理clojure服务器使用客户端凭据验证请求=>验证服务器 代理clojure服务器
- 接收请求
- 将请求转发到外部服务器
- 向服务器发出多个请求以提供更大的json,并作为单个请求返回到客户端
然而,我找不到任何简单的方法,如何将Clojure底座休息
服务与转发路线结合起来 例子
- 客户端调用[GET]/billing=>proxy clojure服务器
- 代理clojure服务器使用客户端凭据验证请求=>验证服务器
- 代理clojure服务器用计费数据填充json=>计费服务器
- 代理clojure服务器用客户数据填充json=>客户服务器
- 代理clojure服务器返回200,并解析完整的JSON
- 我有一个与以下项目结构类似的项目: lein新底座服务我的应用程序
- 我一直在尝试使用类似
(ns your-ns
(:require [tailrecursion.ring-proxy :refer [wrap-proxy]]))
(def app
(-> routes
(wrap-proxy "/remote" "http://some.remote.server/remote")))
我只是不能把基座上的路由系统和这个代理解决方案混合在一起,路由是不同的,看起来,也许我需要用不同的方法
免责声明
您正在创建一个接收请求的服务器。在服务器中,您可以充当向另一台服务器发出请求的客户端。然后,您可以将收到的响应修改或聚合到发送给原始客户端的响应中 请参阅以提出请求。Clojure工具箱列出了许多其他选项
您可能还对以下内容感兴趣。请查看
铃声请求代理。从文档中:
(ns myapp.core
(:require [ring-request-proxy.core :as proxy])
; Middleware format: Delegates request to handler when request can't be forwarded
(def app (-> not-found-handler
(proxy/proxy-request {:identifier-fn :server-name
:host-fn {"my-server" "http://my-internal-server"}})))
您应该将它设置为所有要代理的路由的中间件。我明白了,我也在考虑在这种情况下使用clj,感谢您指出,但请想象一下,对于一组资源(其中很多),例如。g/customer/*所有请求都可以直接转发到外部服务器,无需聚合。如果请求位于某个通配符url中,那么使用类似代理的解决方案转发所有请求不是更容易吗?然后对于路由中定义的其他路由,我可以确定,正如您所说的,使用CLJHTTP