在Alamofire.request中使用validate()方法有什么用?

Ram*_*mar 3 validation swift alamofire

Alamofire.request(.GET, getUrl("mystuff")).validate()- 该validate()方法有什么用?如何使用它来验证服务器连接问题?

Tam*_*gel 12

正如关于GitHub文档所述,validate() 没有参数检查状态代码是否为2xx以及Accept标题的可选部分是否与响应的匹配Content-Type.

例:

Alamofire.request("https://example.com/get").validate().responseJSON { response in
    switch response.result {
    case .success:
        print("Validation Successful")
    case .failure(let error):
        print(error.localizedDescription)
    }
}
Run Code Online (Sandbox Code Playgroud)

您可以使用和参数提供自定义验证选项.statusCodecontentType

例:

Alamofire.request("https://example.com/get")
    .validate(statusCode: 200..<300)
    .validate(contentType: ["application/json", "application/xml"])
    .responseData { response in
        [...]
}
Run Code Online (Sandbox Code Playgroud)

如果要手动检查状态代码,可以使用 response.response?.statusCode.

例:

switch response.response?.statusCode {
case 200?: print("Success")
case 418?: print("I'm a teapot")
default: return
}
Run Code Online (Sandbox Code Playgroud)

  • 感谢您更新答案.非常感谢. (2认同)