이번에는 URLSession에 대해서 알아보았다.
An object that coordinates a group of related, network data transfer tasks.
네트워크 데이터 전달 작업에 연관된 일련의 일을 처리하는 객체이다.
즉, swift에서 네트워크 통신 방법 중 한가지이다. URLSession은 앱과 서버간에 데이터를 주고받기 위해 HTTP를 사용하며, 네트워크 요청을 처리하는 API라고 할 수 있다.
URLSession을 사용하기 위해서 크게 두 가지에 대해서 더 알아보아야한다.
1. URLSessionConfiguration
2. URLSessionTask
Configuration은 환경 설정을 의미
URLSession 으로 네트워크 통신을 하되, 여러가지 커스텀한 설정들을 할 때 URLSessionConfiguration 을 이용한다.
let defaultSession = URLSession(configuration: .defualt)
let ephemeralSession = URLSession(configuration: .ephemeral)
let backgroundSession = URLSession(configuration: .background)
URLSessionTask 으로 네트워크 통신을 할 때 어떤 태스크를 수행할 것 인지 결정 가능하다.
사용에 앞서 https://reqres.in/api/users/1
라는 주소를 이용해 테스트 데이터를 네트워크 통신을 하려고 한다.
https://reqres.in/api/users/1
에 접속해보면 위와 같이 json형태의 데이터를 볼 수 있다. 우리는 이 데이터를 받아오는 동작을 해볼거다.
json형태에 맞게 데이터를 받기위해 아래의 사진과 같이 미리 구조체롤 Codable
이라는 프로토콜을 채택해 구성하면 된다. 그리고 실제 json 데이터와 구조체의 이름이 매칭이 되지 않는다면 enum타입으로 매칭해서 바꿔서 데이터를 받아올 수 있게 해준다.
이제는 네트워크를 통신할 url을 설정해주고, 설정한 url에서 데이터를 어떤식으로 받아올지 아래와 같이 설정을 해주면 된다.
설정을 마친 후 데이터를 요청하는 일을 시킬 dataTask메서드를 구현해주면 된다. dataTask를 통해 얻어오는 (data, response, error) 3가지의 타입이 클로저로 받아온다.
데이터의 성공하는 범위는 200번대 숫자들이기에 아래의 범위를 설정해 주었고, 성공을 했다면 json형식으로 받은 데이터를 디코딩해서 사용할 수 있게 해준다. 그리고 가장 마지막에 보이는 resume
키워드를 마지막에 써줘야 dataTask 메서드가 실행이 되기에 적어줘야한다.