API를 호출하기 위한 방법을 찾던 중, Alamofire 라이브러리가 있지만 라이브러리 말고 스스로 적용해서 불러오는 방법에 익숙해진 후 라이브러리를 사용하는게 좋을거 같다고 판단하여 관련 내용을 정리
URLSession

- URLSession 은 위 사진과 같은 구조를 갖는다
- URLSessionConfiguration 을 통해 URLSession을 결정한후, Session을 생성
- Delegate는 URLSession 통신의 중간 과정이나 통신 종료 후 같은 이벤트를 확인할 때 주로 사용
- URLSessionConfiguration을 통해 Session 을 설정하면 URLSessionTask 로 보내 통신을 시작
URLSessionConfiguration
- URLSessionConfiguration의 종류에 대해 알아보자
- Default : 기본적인 세션으로 쿠키나 캐시를 저장할때 사용 ( 가장 기본적인 통신 )
- Ephemeral : 쿠키나 캐시를 저장하지 않는 통신을 할때 사용 ( Private 모드 )
- Background : 앱이 Background 상태일 때 사용하는 통신
- Configuration 을 적용하지 않고 shared 를 사용할 수 있다
- shared를 사용하면 싱글톤 객체를 제공하는데 편하게 사용할 수 있는 장점이 있지만, delegate도 없고, configuration 도 없기 때문에 일부 제한이 있음 이러한 사항을 고려하지 않을때는 간편하게 사용 가능
URLSessionTask
- Session 작업 하나를 나타내는 추상 클래스
- Task의 종류
- DataTask : 서버로부터 응답 데이터를 받아 Data객체를 가져오는 작업 수행
- UploadTask : 서버에 Data 객체나 File 데이터를 올리는(Upload) 작업 수행
- DownloadTask : 서버로부터 Data를 다운받아 File 형태로 저장하는 작업 수행 ( Background 가능 )