gpt4 book ai didi

proxy - 如何将部分请求转发到 Clojure 中的另一台服务器?

转载 作者:行者123 更新时间:2023-12-04 10:11:05 26 4
gpt4 key购买 nike

概括

我正在开发一个类似于 Clojure 中的代理的服务器,以 pedestal service + lein 作为基础:

  • 接收请求
  • 将请求转发到外部服务器
  • 发出多个服务器到服务器请求以提供更大的 json 并作为单个请求返回给客户端

  • 编码很容易,并且有很多关于如何提供路线的资源,
    但是我找不到任何简单的方法, 如何拥有Clojure pedestal rest服务以及转发路线

    例子
  • 客户端调用 [GET]/billing => proxy-clojure-server
  • proxy-clojure-server 使用客户端凭据验证请求 => 身份验证服务器
  • proxy-clojure-server 用计费数据填充 json => 计费服务器
  • proxy-clojure-server 用客户数据填充 json => 客户服务器
  • proxy-clojure-server 返回 200 并解析完整的 JSON

  • 设置
  • 我有一个与以下结构类似的项目:
    lein new pedestal-service my-app

  • 我一直在尝试的
  • 我一直在尝试使用类似 https://github.com/tailrecursion/ring-proxy 的东西

  • 例子:
    (ns your-ns
    (:require [tailrecursion.ring-proxy :refer [wrap-proxy]]))

    (def app
    (-> routes
    (wrap-proxy "/remote" "http://some.remote.server/remote")))

    我只是无法将基座的路由系统与此代理解决方案混合使用,路由不同,似乎,也许我需要用不同的方法来做

    免责声明
  • 我知道基本的转发也可以通过 nginx、varnish 或任何其他负载均衡器来完成。但我的想法是填充来自不同服务器的数据,从而简化客户端
  • 我是 Clojure 的新手 ,你可能已经注意到了。我用完了选项,因为谷歌也很复杂,有时没用
  • 最佳答案

    看看ring-request-proxyhere .从文档:

    (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"}})))
    您应该将其设置为要代理的所有路由的中间件。

    关于proxy - 如何将部分请求转发到 Clojure 中的另一台服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61332898/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com