10.8. Fetching Data with AlamoFire: 'details' endpoint
http://apis.sakibnm.space:8888/contacts/text/details?name=Mark W
extension ViewController: UITableViewDelegate, UITableViewDataSource{
//codes omitted...
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
getContactDetails(name: self.contactNames[indexPath.row])
}
}//MARK: get details of a contact...
func getContactDetails(name: String){
let parameters = ["name":name]
if let url = URL(string: APIConfigs.baseURL+"details"){
AF.request(url, method:.get,
parameters: ["name":name],
encoding: URLEncoding.queryString)
.responseString(completionHandler: { response in
//MARK: retrieving the status code...
let status = response.response?.statusCode
switch response.result{
case .success(let data):
//MARK: there was no network error...
//MARK: status code is Optional, so unwrapping it...
if let uwStatusCode = status{
switch uwStatusCode{
case 200...299:
//MARK: the request was valid 200-level...
//MARK: show alert with details...
self.showDetailsInAlert(data: data)
break
case 400...499:
//MARK: the request was not valid 400-level...
print(data)
break
default:
//MARK: probably a 500-level error...
print(data)
break
}
}
break
case .failure(let error):
//MARK: there was a network error...
print(error)
break
}
})
}
}
Last updated