gpt4 book ai didi

ios - 如何从 API 发送错误

转载 作者:行者123 更新时间:2023-11-30 14:00:31 30 4
gpt4 key购买 nike

我正在编写一个 WEB API。

但是,即使存在错误,在 swift 代码中,在 Alamofire 请求内,“isSuccess”始终等于 true。

我应该在 JSON 中发送什么才能让 Alamofire 检测到存在错误? (is.Failure = true)。

服务器向我发送错误代码 404,但看起来总是成功:

      Alamofire.request(.GET, Constants.Path.rootUrl + "/api/users", parameters: ["username" : usernameString, "limit":3] , headers: ["tb-token" : userToken!])
.responseJSON { _, _, result in


print(result.value)

switch result {
case .Success(let JSON):
print("Success with JSON: \(JSON)")
self.tableView.hidden = false

self.resultsDict = result.value as! NSArray

let results = result.value
let resultsNumber = results!.count

self.numberOfResults.text = "Results(\(resultsNumber))"
self.numberOfResults.hidden = false

self.resultsN = resultsNumber
self.loadedMode = true


self.tableView.reloadData()
self.tableView.hidden = false
case .Failure(let data, let error):
print((error as NSError).localizedDescription)
}

}

[编辑]我已经上传到Alamofire 3.0,但仍然遇到同样的问题。这是新代码:

         Alamofire.request(.GET, Constants.Path.rootUrl + "/api/users", parameters: ["username" : usernameString, "limit":3] , headers: ["tb-token" : userToken!])
.responseJSON { response in


print(response.request) // original URL request
print(response.response) // URL response
print(response.data) // server data
print(response.result) // result of response serialization


let results = response.result

if let JSON = response.result.value {

if response.result.isSuccess == true {
print("Success with JSON: \(JSON)")
self.tableView.hidden = false

self.resultsDict = results.value as! NSArray

let resultsNumber = results.value!.count

self.numberOfResults.text = "Results(\(resultsNumber))"
self.numberOfResults.hidden = false

self.resultsN = resultsNumber
self.loadedMode = true


self.tableView.reloadData()
self.tableView.hidden = false
}
}
else {print("error")}

}

这是响应。响应:

Optional(<NSHTTPURLResponse: 0x7fa1bb216a50> { URL: http://teambuilding-adall.rhcloud.com/api/users?limit=3&username=adallo } { status code: 404, headers {
"Access-Control-Allow-Origin" = "*";
Connection = "Keep-Alive";
"Content-Length" = 60;
"Content-Type" = "application/json; charset=utf-8";
Date = "Sat, 10 Oct 2015 23:32:13 GMT";
Etag = "W/\"3c-dR4AnAjVi0TRWls1iKAm7w\"";
"Keep-Alive" = "timeout=15, max=60";
"X-Powered-By" = Express;
} })

[最终编辑]我通过添加这两行代码解决了这个问题:

.validate(statusCode: 200..<300)
.validate(contentType: ["application/json"])

最佳答案

根据浏览 Alamofire GitHub 页面以及一般实践,您应该发送非 200 状态代码来指示失败。具体的状态码应与错误的类型或原因相对应。

通常您会发送 4xx 状态代码(例如 400、403、404、409)。在此处阅读要发送的状态代码:http://www.restapitutorial.com/httpstatuscodes.html

关于ios - 如何从 API 发送错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33056875/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com