Ваша проблема .map(to: HTTPResponse.self)
.Карта должна регулярно преобразовывать свой результат в новый результат, как если бы вы map
представляли массив.Тем не менее, результат закрытия вашей карты возвращает EventLoopFuture<HTTPResponse>
.В результате ваша map
функция возвращает EventLoopFuture<EventLoopFuture<HTTPResponse>>
.
. Чтобы избежать этой сложности, используйте flatMap
.
var headers: HTTPHeaders = .init()
let body = HTTPBody(string: a)
let httpReq = HTTPRequest(
method: .POST,
url: URL(string: "/post")!,
headers: headers,
body: body)
let client = HTTPClient.connect(hostname: "httpbin.org", on: req)
let httpRes = client.flatMap(to: HTTPResponse.self) { client in
return client.send(httpReq)
}
РЕДАКТИРОВАТЬ: Если вы хотитеЧтобы использовать Content API, вы можете сделать это следующим образом:
let data = httpRes.flatMap(to: ExampleData.self) { httpResponse in
let response = Response(http: httpResponse, using: req)
return try response.content.decode(ExampleData.self)
}