minuco
Published 2023. 4. 12. 18:53
[Swift Network] URLSession iOS/Swift

URLSession

iOS을 개발하면서 데이터를 공유받는 방법 중 REST API를 주로 사용한다.

URLSession은 REST API를 사용하기 위한 Swift 기술 중 하나이다.

 

동작 순서는

URLSessionConfiguration 결정 -> URLSession 객체 생성 -> 사용할 Task 결정 -> 필요한 Response 메서드 작성 -> Task 실행 -> Task 완료 -> Response 메서드 실행

 

URLSessionConfiguration 결정

URLSessionConfiguration은 URLSession 객체를 생성하기 위한 클래스이다. 

공식문서에서는 URLsession의 동작과 정책을 정의하는 설정 객체라고 정의돼어져 있다. [공식문서]

 

URLSessionConfiguration 오브젝트(객체) 생성

class var default: URLSessionConfiguration 

:. default라 쓰며 기본통신할 때 사용한다. 

 

class var ephemeral: URLSessionConfiguration

:. ephemeral 쿠키나 캐시를 저장하지 않는 정책을 사용할 때 사용한다.

 

class var background(withIdentifier: String) -> URLSessionConfiguration

:. background 앱이 백그라운드 상태에 있을 때 콘텐츠를 다운로드/ 업로드

 

URL 기본 구성

let urlString = "https://www.example.com/apimain/users?titleid=apple&machine=ipone"
let url = URL(string: urlString)

print(url?.absoluteURL) // 전체주소
print(url?.scheme) // protocol
print(url?.host) // host(baseURL)
print(url?.path) // path
print(url?.query) //query parameter
print(url?.baseURL)// 설정하지 않을경우 difault는 nil
/*
 Optional(https://www.example.com/apimain/users?titleid=apple&machine=ipone)
 Optional("https")
 Optional("www.example.com")
 Optional("/apimain/users")
 Optional("titleid=apple&machine=ipone")
 nil
 */
let baseURL = URL(string: "https://www.example.com")
let relativeURL = URL(string: "/apimain/users?titleid=apple&machine=ipone", relativeTo: baseURL)
print(relativeURL?.absoluteURL)
print(relativeURL?.scheme)
print(relativeURL?.host)
print(relativeURL?.path)
print(relativeURL?.query)
print(relativeURL?.baseURL)
/*
 Optional(https://www.example.com/apimain/users?titleid=apple&machine=ipone)
 Optional("https")
 Optional("www.example.com")
 Optional("/apimain/users")
 Optional("titleid=apple&machine=ipone")
 Optional(https://www.example.com)
 */

 

 

'iOS > Swift' 카테고리의 다른 글

[swift]커스텀 프리뷰사용방법  (0) 2023.04.16
[Swift Network] URLSession - 사전지식  (0) 2023.04.12
[Swift] Closure - 축약  (0) 2023.03.23
[Swift] Closure - escaping  (0) 2023.03.23
[Swift] Closure - Capturing  (0) 2023.03.23
profile

minuco

@minuco

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!