目前我正在使用Alamofire + ObjectMapper。我想改用AlamofireObjectMapper。 但我有一个问题:如何处理api内容级错误?
例如,当我尝试保存新用户时: 如果我发送到服务器的所有细节都有效,那么我的服务器将新的用户详细信息返回为json。 但如果我发送了错误的细节(在应用程序逻辑级别),api将返回一个json,只返回错误消息,例如"此用户名已被采取"
目前我正在使用Alamofire返回json:
Alamofire.request(myURL, method: .post, parameters: dic, encoding: JSONEncoding.default).validate().responseString { response in
switch response.result {
case .success:
if let JSON = response.result.value {
callback(JSON)
} else {
print("error with response.result.value")}
case .failure:
debugPrint(request)
//alert to user
}
}
然后,在回调中,我检查json以查看它是否看起来像用户结构或错误结构(如果它是用户结构,我使用ObjectMapper使其成为User对象):
MyAPI.saveUser(user){
(response) in
// response to json (to check error)
if (MyAPI.JSONToDictionary(response)!)["error"] != nil{
// Application level error (logic)
print((MyAPI.JSONToDictionary(response)!)["error"])
}
else{
//Using ObjectMapper - response to User object
let responsedUser = MyAPI.jsonToUser(response)
self.performSegue(withIdentifier: "userDetailsSegue", sender: self)
}
}
问题是:AlamofireObjectMapper将响应直接映射到用户。我如何检查映射是否成功并处理它没有的情况?如何获取服务器发送的错误消息?
谢谢!