서버와 통신하기 위한 API
Request, Response 구조를 가짐URL 객체를 통해 직접 통신하는 방식URLRequest 객체를 만들어 옵션을 설정하여 통신하는 방식Task의 Conpletion Handler 형태롤 받는 방식URLSessionDelegate를 통해 지정된 메서드를 호출하는 방식Session의 configuration 결정 및 Session 생성URL과 Request 객체 설정Task를 결정하고 그에 맞는 Completion Handler 또는 Delegate 메서드 작성Task를 실행Completion Handler(또는 Delegate 메서드) 실행Session 객체가 서버로 요청을 보낸 후, URL 기반의 응답을 받는(retrive) 역할
HTTP의 각종 메서드를 통해 서버로부터 응답을 받아 Data 객체를 가져오는 작업을 수행
URLSessionr과 같은 네트워킹용 API 보통 앱 전역에서 사용하므로 viewController 보단 클래스를 만들어 static 메서드로 사용하는 것이 좋음func dataTask(with url: URL) -> URLSessionDataTask
URL에 데이터를 요청하는 데이터 작업 객체를 생성
func dataTask(with request: URLRequest) -> URLSessionDataTask
URLRequest 객체를 기반으로 URL에 데이터를 요청하는 데이터 작업 객체를 생성
func dataTask(with url: URL, completionHandler: @escaping (Data?, URLResponse?, Error?) -> Void) -> URLSessionDataTask
URL에 데이터를 요청하고 요청에 대한 응답을 처리할 완료 핸들러(Completion Handler)를 갖는 데이터 작업 객체를 생성
func dataTask(with request: URLRequest, completionHandler: @escaping (Data?, URLResponse?, Error?) -> Void) -> URLSessionDataTask
URLRequest 객체를 기반으로 URL에 데이터를 요청하고 요청에 대한 응답을 처리할 완료 핸들러(Completion Handler)를 갖는 데이터 작업 객체를 생성