【发布时间】:2019-08-10 05:47:20
【问题描述】:
如何在 Vapor 3 中使用 HTTPRequest 结构发送 API 请求?
我尝试了以下代码的变体..
var headers: HTTPHeaders = .init()
let body = HTTPBody(string: a)
let httpReq = HTTPRequest(
method: .POST,
url: URL(string: "/post")!,
headers: headers,
body: body)
let httpRes: EventLoopFuture<HTTPResponse> = HTTPClient.connect(hostname: "httpbin.org", on: req).map(to: HTTPResponse.self) { client in
return client.send(httpReq)
}
编译错误Cannot convert value of type '(HTTPClient) -> EventLoopFuture<HTTPResponse>' to expected argument type '(HTTPClient) -> _'
我已经尝试过其他有效的代码变体。
Vapor 3 Beta Example Endpoint Request
let client = try req.make(Client.self)
let response: Future<Response> = client.get("http://example.vapor.codes/json")
我反复阅读:
【问题讨论】:
-
我已经尝试过其他有效的代码变体 - 所以你得到了它的工作方式,但想改用
HTTPRequest? -
嘿@LinusGeffarth。我通过使用名为
Client的更高级别的包装器找到了一种更简单的方法。我发现Protocol的 cmets 在Client.swift的代码文件中非常有用。 -
对于我未来的自己(和其他任何人):你需要做
req.client().post(....),请参阅Client.swift中的文档,就像上面描述的 rustyMagnet。