要快速访问REST API,我们需要使用本机快速联网方法(即使用URL会话和数据任务)来完成一系列步骤。
Rest代表代表性状态转移,它定义了Web服务将使用的一组约束。我们可以通过以下方式快速访问Web服务。
首先,我们需要创建一个会话对象,这是默认配置。
let configuration = URLSessionConfiguration.default let session = URLSession(configuration: configuration)
然后,我们需要创建所需类型的URL请求,它可以获取,发布,删除或放置。在此示例中,我们看到的是“ GET”类型。
let url = URL(string: URLString) //让url = NSURL(string:urlString as String) var request : URLRequest = URLRequest(url: url!) request.httpMethod = "GET" request.addValue("application/json", forHTTPHeaderField: "Content-Type") request.addValue("application/json", forHTTPHeaderField: "Accept")
创建请求对象后,我们需要使用上面刚刚创建的URL执行dataTask。这就是我们完整的dataTask方法现在的样子。
let dataTask = session.dataTask(with: url!) { data,response,error in guard let httpResponse = response as? HTTPURLResponse, let receivedData = data else { print("error: not a valid http response") return } switch (httpResponse.statusCode) { case 200: //成功的回应。 break case 400: break default: break } } dataTask.resume()
现在,我们可以将其嵌入到函数中并在我们的代码中使用。
func hitAPI(_for URLString:String) { let configuration = URLSessionConfiguration.default let session = URLSession(configuration: configuration) let url = URL(string: URLString) //让url = NSURL(string:urlString as String) var request : URLRequest = URLRequest(url: url!) request.httpMethod = "GET" request.addValue("application/json", forHTTPHeaderField: "Content-Type") request.addValue("application/json", forHTTPHeaderField: "Accept") let dataTask = session.dataTask(with: url!) { data,response,error in //1:检查HTTP响应以获取成功的GET请求 guard let httpResponse = response as? HTTPURLResponse, let receivedData = data else { print("error: not a valid http response") return } switch (httpResponse.statusCode) { case 200: //成功的回应。 break case 400: break default: break } } dataTask.resume() }
注–您可能需要允许info.plist文件中的“传输安全性”例外访问某些API。
此示例未显示任何输出,因为需要API才能获取一些数据。