티스토리 뷰

Swift

Swift ) URLComponents

Zedd0202 2020. 8. 23. 11:52
반응형

 

안녕하세요 :) Zedd입니다.

오늘은 URLComponents에 대해서 공부해보겠습니다.

 

URLComponents


간단한 정의는...URL을 구성하는 "구조"라고 생각하시면 됩니다.

 

예를들어

GET http(s)://[hostname]/login/oauth/authorize

위 URL호출시 client_id와 scope라는 값을 파라미터로 전달하고 싶습니다.

get이니 파라미터는 URL 쿼리스트링으로 들어가게됩니다. 

그러면

GET http(s)://[hostname]/login/oauth/authorize?client_id=\(client_id)&scope=\(scope)

이런식으로 요청 할 수 있겠죠.

 

네! 아무문제 없어요! 

근데 오늘 공부할 URLComponents를 사용하면 좀 더..깔끔하게 할 수 있을 것 같아요.

GET http(s)://[hostname]/login/oauth/authorize?client_id=\(client_id)&scope=\(scope)

이렇게 하면 파라미터 이름에 오타가 있는데도 발견하기 힘들 수 있으니까요...??

 

그럼 본격적으로 사용해봅시다.

1. URLComponents를 base가 될 URL을 가지고 만들어줍니다.

2. URLQueryItem을 만들어줍니다. 이 친구는 URL 쿼리 부분으로 들어갈 name-value쌍입니다. 저는 client_id와 scope를 넣어줬습니다.

3. URLComponents의 queryItems에 만든 URLQueryItem들을 넣어줍니다. 넣어준 순서대로 URL 쿼리 문자열에 나오게 됩니다. 

그럼 결과는 

https://github.com/login/oauth/authorize?client_id=\(clientID)&scope=\(scope)

우리가 처음 static string으로 만들었던것과 똑같이 만들어집니다.

 

[주의]

- component.queryItems.append(만든 URLQueryItem) 하면 component.url했을 때 반영 안됨.

 

 

그럼 반대로 해볼까요? 

https://github.com/login/oauth/authorize?client_id=\(clientID)&scope=\(scope)

이런 URL이 있을 때 client_id와 scope를 얻고싶습니다.

이럴떄도 URLComponents를 사용하면 간편합니다.

위 과정을 거꾸로 하면 됩니다. queryItems을 가져오고..queryItems이 배열이었으니까, 해당 배열을 돌면서 가져오면 되겠죠.

 

queryItems들만 가져올 순 있는게 아닙니다.

이런것들도 간편하게 가져올 수 있습니다!

 

반응형

'Swift' 카테고리의 다른 글

Swift ) 정렬 (1)  (0) 2020.11.23
Swift 5.3 released!  (3) 2020.09.17
Swift ) TextOutputStream  (1) 2020.04.25
Swift 5.2 Released!  (1) 2020.03.25
Standard Library Preview Package  (1) 2020.02.19