본문 바로가기
iOS📱/Swift

[ Swift ] URLComponents 알아보기

by 텅빈비니 2023. 6. 15.
반응형

안녕하세요🐶

빈지식 채우기의 비니🙋🏻‍♂️입니다.

 

오늘의 포스팅은 URLComponents에 대해 알아보도록 하겠습니다.

 

1. 개요

간단히 말하여 URL을 구성하는 구조라고 볼 수 있습니다.

예를 들어 

GET https://[hostname]/beani/test

위 URL을 기반으로 GET 방식을 통해 통신을 하고 싶다고 가정해봅니다.

GET 방식이기 때문에 파라미터는 아래와 같이 URL 쿼리 스트링으로 들어가게 됩니다.

GET https://[hostname]/beani/test?key1=\(value1)&key2=\(value1)

이런 식으로 요청할 수 있습니다.

위와 같이 URL String 뒤에 붙여서 사용할 수 있으나

오늘 알아보는 URLComponents를 사용하면 좀더 간단하고 실수 없이 사용이 가능합니다.

 

2. URL 만들기

let v1 = "value1"
let v2 = "value2"

var components = URLComponents(string: "https://[hostname]/beani/test")     // (1)
let value1 = URLQueryItem(name: "key1", value: "\(v1)")     // (2)
let value2 = URLQueryItem(name: "key2", value: "\(v2)")     // (2)
components?.queryItems = [value1, value2]       // (3)
print(components?.url)       // (4)
  1. URLComponents 객체를 생성합니다.
  2. URLQueryItem 객체를 생성합니다. name 과 value는 한쌍으로 생성되어야만 합니다.
  3. (1)에서 생성한 URLComponents의 queryItems에 배열 형태로 넣어줍니다.
  4. 생성된 URL은 아래와 같이 출력됩니다.

%주의%
1. component.queryItems 에 배열의 형태로 들어갑니다.
2. 하지만 append로 추가 시 component.url 했을 때 반영이 되지 않습니다.

 

3. URL 분해하기

let url = "https://test.com/beani/test?key1=value1&key2=value2"
let components = URLComponents(string: url)

print("scheme :", components?.scheme)
print("host :", components?.host)
print("query :", components?.query)
print("path :", components?.path)

let items = components?.queryItems ?? []
for item in items {
    print("name :", item.name)
    print("value :", item.value)
}

URLComponents는 이미 생성된 URL의 정보들을 위와 같이 가지고 올 수 있습니다.

 

이상으로 URLComponents 알아보기 포스팅을 마치겠습니다.
틀린 부분이나 궁금한 사항은 댓글 남겨주세요~

 


참고

반응형