我正在使用新的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
}
}
我想您还必须通过所有标头才能获得授权。
req.headers
也可以使用
app.post("**") { req in
// instead of
app.post("a", "b", "c") { req in
捕获所有端点,然后从
path
检索
Request
req.url.path
这样您只需几行代码即可实现
passthrough
服务器。