根据行业惯例,我应该在进行 API 调用之前还是在 Alamofire 中进行 API 调用期间检查互联网可访问性
Posted
技术标签:
【中文标题】根据行业惯例,我应该在进行 API 调用之前还是在 Alamofire 中进行 API 调用期间检查互联网可访问性【英文标题】:By industry practices, should I check internet reachability before making API call or during API call in Alamofire 【发布时间】:2017-06-21 07:28:31 【问题描述】:我刚开始通过 Alamofire 建立网络,在网络方面我是新手
我正在处理 Alamofire Api 调用中的响应验证, 所以按照行业惯例在api请求之前检查互联网可达性还是通过alamofire收到的错误代码处理它更好!
我了解到在拨打互联网电话之前检查互联网连接会导致应用程序开销
let manager = Alamofire.SessionManager.default
manager.session.configuration.timeoutIntervalForRequest = 60
manager.request("http://api.androidhive.info/contacts/")
.validate()
.responseJSON
response in
switch (response.result)
case .success:
// code
case .failure(let error):
if error._code == NSURLErrorTimedOut
print("Request call timed Out !!")
self.displayText?.text = "Request call timed Out !!"
else if error._code == -1009
print(" You Sir are not Connected to the Internet !!")
self.displayText?.text = "You Sir are not Connected to the Internet !!"
else if error._code == -1003
print(" \t bruh, \n Atleast provide a Valid URL ")
self.displayText?.text = "bruh,Atleast provide a Valid URL "
else
print("Meh, Some Kind of error with errorCode: \(error._code) !!")
self.displayText?.text = "Meh, Some Kind of error with errorCode: \(error._code) !!"
【问题讨论】:
就我而言,除非必须,否则我不会在发出请求之前检查可达性。 【参考方案1】:不,您不应在拨打电话前检查互联网连接。苹果特别建议不要这样做。只有在请求失败后才应使用可达性,以防您想在连接重新联机时自动重试请求。
【讨论】:
【参考方案2】:If Internet is available
//Make rest calls.
else
// Return cached response.
由你决定,首先检查互联网节省计算资源和请求创建和api调用。
如果有的话,还提供返回缓存数据的选项。
【讨论】:
【参考方案3】:实际上,这取决于您和您的产品特定要求。然而,当用户尝试访问互联网时,向用户显示某种提示是一个很好的做法,而互联网不可用,而不显示任何加载指示并让他等待。我的建议是在拨打任何电话之前不要检查互联网可达性,而是通过 Alamofire 的 NetworkReachabilityManager
类监听网络可达性的变化并对你的 UI 进行适当的更改(例如,当互联网消失时禁用与网络相关的按钮等)。
【讨论】:
以上是关于根据行业惯例,我应该在进行 API 调用之前还是在 Alamofire 中进行 API 调用期间检查互联网可访问性的主要内容,如果未能解决你的问题,请参考以下文章
按照惯例应该返回哪些 REST PUT/POST/DELETE 调用?