http 통신을 하기 위한 절차가 있다.
urlsession은 http/https 기반의 요청을 처리하기 위한 클래스입니다!
class URLSession : NSObject
URLSession HTTP 요청을 보내고 받는 핵심 객체 입니다.
이 과정을 일시정지(suspend),재개(resume),취소(cancel) 할 수 있으며, URLSessionDownloadTask는 향후에 재개(resumeption)하기 위해 일시 정지(pause) 할 수 있다.
URLSession은 2가지 형태로 데이터를 반환.
데이터를 조회하고, 업로드하는 메서드들이 URLSession에 있다. 위 메서드를 사용할 때 파라미터로 URLRuqeust를 필요로 하는 메서드와 URL를 필요로 하는 메서드가 있는데 그 중 URLRuquest에 대해서도 알아보겠습니다.
struct URLRequest
URLRequest는 http/https 통신을 위한 방법(GET,POST,PUT)을 설정하고 http header을 포함하고 있다.
URLRequest는 request에 대한 정보만을 담는 구조체이므로, http통신을 하기 위해 URLSession을 사용해야 한다.
var httpMethod: String? { get set }
//http request 방법을 설정. default는 get.
var url: URL? { get set }
//통신을 하기 위한 url. request생성시 반드시 포함해야 한다.
var httpBody: Data? { get set }
// get이 아닌 post,put처럼 데이터를 전달할때.
http header설정
mutating func addValue(_ value: String, forHTTPHeaderField field: String)
var session = URLSession(configuration: .default)
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
request()
}
func request() {
let url = URL(string:"https://jsonplaceholder.typicode.com/todos")
let request = URLRequest(url: url!)
let dataTask = session.dataTask(with: request) { (data,response,error) in
if let error = error {
print("DEBUG: error is \(error)")
}
guard let data = data,let reponse = response as? HTTPURLResponse, reponse.statusCode == 200 else {
print("error")
return
}
guard let jsonArray = try? JSONSerialization.jsonObject(with: data, options: []) else { return }
print(jsonArray)
}
dataTask.resume()
}
결과값은 https://jsonplaceholder.typicode.com/todos에서 볼 수 있는 값들과 위의 request 함수를 실행했을 때 가장 위의 4개 값을 가져왔습니다.
값이 동일한 것을 알 수 있습니다.
가져온 데이터를 json화 하는 함수는 다음에 작성하겠습니다!
ref:
https://developer.apple.com/documentation/foundation/urlsession
https://developer.apple.com/documentation/foundation/urlrequest
https://www.raywenderlich.com/3244963-urlsession-tutorial-getting-started
http통신을 하기 위해 https://jsonplaceholder.typicode.com 사용했습니다!