data 是 URLSession 的简化方法,通常用于同步请求。它的返回值是一个同步执行的 Data,在实际应用中不常用,因为大多数网络请求都是异步的。data 不适合文件上传、下载以及通过 POST 发送数据,一般仅用于快速获取简单数据的情况(如调试)。
需要注意的是,这个方法会阻塞当前线程直到请求完成,不适合在主线程中使用。它主要用于获取数据而非上传、下载等复杂操作。
使用方法
以下示例演示了如何使用 URLSession.shared.data(from:) 方法从指定 URL 获取数据,并将其解码为字符串。
import Foundation
Task {
if let url = URL(string: "https://jsonplaceholder.typicode.com/todos/1") {
do {
// 异步请求数据
let (data, response) = try await URLSession.shared.data(from: url)
// 检查响应状态
if let httpResponse = response as? HTTPURLResponse, httpResponse.statusCode == 200 {
// 将数据解码为字符串
if let resultString = String(data: data, encoding: .utf8) {
print("响应数据: \(resultString)")
}
} else {
print("请求失败或状态码不为 200")
}
} catch {
print("请求失败: \(error)")
}
}
}
代码解读
1、URLSession.shared.data(from:):这个方法会发出同步网络请求,并返回元组 (data, response),其中:
data 是请求的返回数据。
response 是 URLResponse 对象,包含请求的元数据。
2、检查 HTTP 状态码:确保状态码为 200(成功),以确认数据有效。
3、数据解码:使用 String(data:encoding:) 将 Data 转换为可读的 String(例如 JSON 字符串)。
适用场景
调试:在单元测试中快速测试 API 响应。
脚本:在一些同步操作需求中(如命令行工具)。
注意:因为它是同步执行,通常不建议在主线程或需要保持应用响应的场景中使用。