URLComponents
URLComponents는 URL을 구성하는 구조이다.
공식문서

scheme: 접근할 방법을 정의해 둔 프로토콜
host: 접근할 서버의 호스트 이름
path: 호스트에서 제공하는 리소스의 경로
query: 요청받을 리소스의 범위를 좁히기 위해 사용 Query는 질문 형식인 "?"뒤에 연결되는 name-value의 쌍으로 구성되어 있다. 또한 &를 통해 여러 Query추가가 가능하다.
URL을 만드는 것은 어렵지 않다.(optional URL instance를 반환한다.)
var url = URL(string: "https://myapi.com")
path를 URL에 추가하는 것 또한 어렵지 않다.
url = url?.appendingPathComponent("users")
하지만 이렇게 계속 query parameters를 추가하게 된다면 점점 지저분한 코드가 될것이다.
var components = URLComponents()
components.scheme = "https"
components.host = "velog.io"
components.path = "/@hong2"
components.query = "posts"
components.url //https://velog.io/@hong2/posts
위의 방법 이외에도 Query파라미터를 깔끔하게 다룰 수 있는 URLQueryItem이 있습니다. 키값과 value로 되어있어 각각의 값을 넣어주기만 하면 됩니다.
var components = URLComponents(string: "https://example.com")!
let keyword = URLQueryItem(name: "key", value: "iOS")
let page = URLQueryItem(name: "value", value: "Developer")
components.queryItems = [keyword, page]
다른 방법도 보겠습니다
let baseURL = https://example.com
let url = baseURL.appending(queryItems: [
apiKey,
keyword,
page
])
let request = URLRequest(url: url)