HTTP Request
Network 통신 클래스 만들기
접기
import SwiftUI
class Network: ObservableObject { // ObservableObject 프로토콜 채택 >> 뷰 리프레쉬
@Published var users: [User] = [] //데이터 @Published 로 선언 >> 이 데이터 변경시 뷰 리프레쉬
func getUsers() { // 데이터 가져오는 메서드 정의
guard let url = URL(string: "https://jsonplaceholder.typicode.com/users") else { fatalError("Missing URL") }
let urlRequest = URLRequest(url: url)
let dataTask = URLSession.shared.dataTask(with: urlRequest) { (data, response, error) in
if let error = error {
print("Request error: ", error)
return
}
guard let response = response as? HTTPURLResponse else { return }
if response.statusCode == 200 {
guard let data = data else { return }
DispatchQueue.main.async {
do {
let decodedUsers = try JSONDecoder().decode([User].self, from: data)
self.users = decodedUsers
} catch let error {
print("Error decoding: ", error)
}
}
}
}
dataTask.resume()
}
}
Swift
복사