使用 Vapor 重定向请求

问题描述 投票:0回答:1

我正在使用新的Vapor,我们希望使用它作为在模拟服务器和真实服务器之间切换的方式。

在 Xcode 中的客户端应用程序中,我们可以调用真实服务器(例如 realbase.com/a/b/c)来获取合法响应。

但是我们想做一个“passthrough”。意味着客户端应用程序调用vapor,然后vapor调用真实的url,然后将结果返回给客户端:

  • 为了让客户端应用程序使用 Vapor,我们让客户端向

    http://127.0.0.1:8080/a/b/c
    发出 url 请求,这样 Vapor 就会捕获它。

  • 一旦我们通过

    app.post("a", "b", "c") {...}
    收到请求,我们想要使用真正的基本 url,然后向
    realbase.com/a/b/c
    发出 url 请求,然后返回结果。这样从客户的角度来看,他们不知道这是真实版本还是模拟版本。

目前这是我写的,但它不起作用。我收到的回复说我没有获得授权。

func routes(_ app: Application) throws {
  app.post("a", "b", "c") { req in
    let response = try await req.client.post("https://realbase.com/a/b/c") 
    return response
  }
  
}
swift vapor
1个回答
0
投票

我想您还必须通过所有标头才能获得授权。

req.headers

也可以使用

app.post("**") { req in

// instead of

app.post("a", "b", "c") { req in

捕获所有端点,然后从

path
 检索 
Request

req.url.path

这样您只需几行代码即可实现

passthrough
服务器。

© www.soinside.com 2019 - 2024. All rights reserved.