728x90
반응형
안녕하세요🐶
빈지식 채우기의 비니🙋🏻♂️입니다.
오늘의 포스팅은 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)
- URLComponents 객체를 생성합니다.
- URLQueryItem 객체를 생성합니다. name 과 value는 한쌍으로 생성되어야만 합니다.
- (1)에서 생성한 URLComponents의 queryItems에 배열 형태로 넣어줍니다.
- 생성된 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 알아보기 포스팅을 마치겠습니다.
틀린 부분이나 궁금한 사항은 댓글 남겨주세요~
참고
728x90
반응형
'iOS 🖥️ > Swift' 카테고리의 다른 글
[Swift] init 과 convenience init 의 차이 (2) | 2024.02.28 |
---|---|
[Swift] Json Parsing ( JsonSerialization vs Codable ) (0) | 2024.02.23 |
[ Swift ] Expandable UITableView 만들기 (2) | 2023.05.23 |
[ RxSwift ] Observable & Subscribe (0) | 2023.05.09 |
[ Swift ] 일급 객체 ( First-Class Object ) (2) | 2023.01.26 |