В Vapor 4 я обрабатываю пост-запрос, вызывая запрос к стороннему API и возвращая значение, основанное на результате, который я получаю. Следующий код приводит к ошибке: «Неправильное преобразование из функции броска ... в функцию не бросания»
app.post("activate") { req -> EventLoopFuture<ActivationRequestResponse> in
return req.client.post("https://api.example.com/activation", headers: HTTPHeaders(), beforeSend: { (req) in
try req.content.encode(RequestBody(value: someValue), as: .json)
})
.map { (response) -> ActivationRequestResponse in
let response = try response.content.decode(ResponseModel.self)
return ActivationRequestResponse(success: true, message: "success")
}
}
Я не могу использовать try
в цепочке map()
после получения результат API. Приведенный выше код будет работать, если я добавлю !
к try
in let response = try response.content.decode(ResponseModel.self)
внутри карты, но в идеале я хочу уловить эту ошибку. Первый try
, используемый при создании тела ответа, кажется, неявно передается обратно по цепочке, но не второй.
Что я делаю не так? Как отловить ошибку при декодировании содержимого ответа? Почему первый try
пойман, а не второй?