Alamofire 5 responseDecodable fail - PullRequest
       17

Alamofire 5 responseDecodable fail

0 голосов
/ 15 октября 2019

Alamofire имеет изящную .responseDecodable функцию, которая делает простой анализ при request.result = .success, но как декодировать объект ошибки в случае failure?

В моем случае, backend может вернуть множествоошибки, так как, например, плата за кредитную карту может иметь бесконечное количество причин - ошибка OTP, отклонение и т. д.

Должен ли я изменить свой подход к запросам? Поскольку Alamofire на самом деле не поддерживает обработку ошибок (по крайней мере, с responseDecodable), как есть.

1 Ответ

1 голос
/ 15 октября 2019

Это полностью зависит от того, как структурированы ваши ответы. Есть несколько способов подойти к этому:

  • Создайте enum, представляющий ваши ответы, общий для значения успеха (и, возможно, отказа). Что-то вроде APIResponse<Success>, которое само по себе Decodable и попытается проанализировать значение успеха или ошибку из ответа. Это позволит вам продолжать использовать responseDecodable, но вам придется исправлять ошибки ответа с ошибками запроса, созданными Alamofire.
  • Создайте свой собственный ResponseSerializer, который знает, как декодировать значения успеха и неудачи, которыеМожете ли вы подключиться к методу Alamofire response.
  • Кроме того, вы можете расширить DataRequest с помощью специального метода response, который использует ваш собственный сериализатор.
...