Ios 帮助器中的Swift 3可重用post方法
我正在开发swift 3应用程序,希望使用RESTAPI构建登录系统。首先,我想用参数将数据发布到服务器(PHP+MYSQL),所以我找到了这篇文章 现在我想把这个代码作为助手放在一个方法中,这样我就可以在应用程序的任何地方使用这个方法。因此, 目前的代码如下:Ios 帮助器中的Swift 3可重用post方法,ios,iphone,swift,macos,rest,Ios,Iphone,Swift,Macos,Rest,我正在开发swift 3应用程序,希望使用RESTAPI构建登录系统。首先,我想用参数将数据发布到服务器(PHP+MYSQL),所以我找到了这篇文章 现在我想把这个代码作为助手放在一个方法中,这样我就可以在应用程序的任何地方使用这个方法。因此, 目前的代码如下: import Foundation class Helper { static func postData(resource: String, params: [String: String]) -> [String:S
import Foundation
class Helper {
static func postData(resource: String, params: [String: String]) -> [String:String] {
var request = URLRequest(url: URL(string: "http://localsite.dev/api/\(resource)")!)
request.httpMethod = "POST"
var qryString: String = "?key=abcd"
for (paramKey, paramVal) in params {
qryString = qryString.appending("&\(paramKey)=\(paramVal)")
}
request.httpBody = qryString.data(using: .utf8)
let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data, error == nil else {
print("Error")
return
}
if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode != 200 {
print("Error on HTTP")
return
}
let responseString = String(data: data, encoding: .utf8)
print("success and here is returned data \(responseString)")
}
task.resume()
return ["data" : "some data"]
}
}
称之为使用
let loginDetails: [String: String] = ["email": emailTxt.text!, "pass": passTxt.text!]
Helper.postData(resource: "login", params: loginDetails)
在上面的方法,而不是打印数据,我想返回数据按照以下4个条件
1.如果请求数据中有错误,则我希望返回为
[“status”: false, “message”: “Something wrong with request”]
2.HTTP请求中的If错误
[“status”: false, “message”: “Resource not found”]
3.如果登录失败
[“status”: false, “message”: “Wrong login details”]
4.如果登录成功
[“status”: true, “message”: “Login success”]
如果您想使用第三方库来处理HTTP请求,我强烈建议您 当我想要处理HTTP请求时,我通常创建一个单例类:
class HttpRequestHelper {
static let shared = HttpRequestHelper()
func post(to url: URL, params: [String: String], headers: [String: String], completion: (Bool, String) -> ()){
//Make the http request
//if u got a successful response
// parse it to JSON and return it via completion handle
completion(true, message)
//if response is not successful
completion(false, message)
}
}
您可以在任何地方使用它:
class AnotherClass: UIViewController {
HttpRequestHelper.shared.post(to: url, params: [:], header: [:],
completion:{
success, message in
print(success)
print(message)
})
}
为了使POST方法更加可重用,而不仅仅是特定于端点,我通常将完成处理程序参数设置为Bool、JSON。然后我从调用该方法的任何地方处理JSON响应
哦,我使用快速json解析json,这是最简单的 您将需要向函数传递一个完成处理程序闭包,并让任务的完成处理程序调用该处理程序,以将值再次返回给callerHi@Paulw11。。你能给我举个例子吗?抱歉,iphone开发和swift有点陌生。你能给我举个例子说明我的代码吗。。当我用完成(true,message)替换打印消息时,我得到错误。