2

端点以代码 201 和一个空的响应正文进行响应。查看 Alamofire 文档,只有 204 和 205 响应正文可以为空。有一个解决方案,我们可以指定带有空结果的状态码。添加了一组

emptyResponseCodes: [200, 201, 202, 203, 204, 205]

发送请求后,我仍然收到错误!= nil 我在这里做错了什么?

responseDecodable(of: TResult.self,
                  decoder: self.jsonDecoder,
                  emptyResponseCodes: [200, 201, 202, 203, 204, 205],
                  completionHandler: { (response: DataResponse<TResult, AFError>) in
                                    
                                    if let error = response.error {
                                        taskCompletionSource.set(error: error)
                                    } else if let result = response.value {
                                        taskCompletionSource.set(result: result)
                                    } else {
                                        taskCompletionSource.set(result: EmptyCodable())
                                    }
4

1 回答 1

2

Alamofire 包含一个Empty用于此目的的类型,以及一个EmptyResponse协议,以便类型可以定义自己的空值。在我们包含的响应序列化程序中,我们检查是否允许空响应,如果允许,则尝试转换相关的空类型。

例如:

struct EmptyEntity: Codable, EmptyResponse {
    
    static func emptyValue() -> EmptyEntity {
        return EmptyEntity.init()
    }
}
于 2021-03-05T18:26:43.267 回答