์ƒ์„ธ ์ปจํ…์ธ 

๋ณธ๋ฌธ ์ œ๋ชฉ

๋‹ค์‹œ ๋˜์งš์–ด ๋ณด๋Š” ๊ณต๊ณต๋ฐ์ดํ„ฐํฌํ„ธ API Key ์˜ค๋ฅ˜์™€ ํ•ด๊ฒฐ ๊ณผ์ •

๋ณธ๋ฌธ

๋ฌธ์ œ์ 1

๊ณต๊ณต๋ฐ์ดํ„ฐํฌํ„ธ์—์„œ ์ œ๊ณต๋˜๋Š” ํ‚ค๋Š” ์ธ์ฝ”๋”ฉ์ด ํ•œ ๋ฒˆ๋œ ์„œ๋น„์Šคํ‚ค๋‹ค. 

urlComponents์˜ queryItems๋ฅผ ํ†ตํ•ด์„œ ์ฟผ๋ฆฌํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์„ค์ •ํ•˜๋Š” url์„ ์ƒ์„ฑํ•˜๋Š” ๊ณผ์ •์—์„œ

ํ•œ๋ฒˆ ๋” ์ธ์ฝ”๋”ฉ์ด ๋˜์–ด 2๋ฒˆ ์ธ์ฝ”๋”ฉ์ด ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. 

์ธ์ฝ”๋”ฉ์ด 2๋ฒˆ๋จ์— ๋”ฐ๋ผ, ์™„์„ฑ๋œ url์˜ ์ฃผ์†Œ๊ฐ€ ๋‹ฌ๋ผ์ ธ ์„œ๋ฒ„๋กœ ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ฌ ์ˆ˜ ์—†์—ˆ๋‹ค. 

 

 

๋ฌธ์ œํ•ด๊ฒฐ1

ํ•ด๋‹น ์‚ฌํ•ญ์„ ๊ตฌ๊ธ€๋ง์„ ํ†ตํ•ด ์ธ์ฝ”๋”ฉ์ด ๋‘๋ฒˆ ๋˜์–ด ๋ฐœ์ƒํ•œ ๋ฌธ์ œ๋ผ๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. 

์ธ์ฝ”๋”ฉ์ด ๋‘ ๋ฒˆ๋œ ๊ฒƒ์ด ๋ฌธ์ œ์˜€์œผ๋ฏ€๋กœ, ๋””์ฝ”๋”ฉ์„ ํ•ด์ค€๋‹ค.

 

๊ณต๊ณต๋ฐ์ดํ„ฐํฌํ„ธ์˜ ๋งˆ์ดํŽ˜์ด์ง€์— ๋“ค์–ด๊ฐ€๋ฉด ์ธ์ฝ”๋”ฉ๋œ ์ธ์ฆํ‚ค์™€ ๋””์ฝ”๋”ฉ๋œ ์ธ์ฆํ‚ค ๋‘˜ ๋‹ค ์ œ๊ณตํ•˜๊ณ  ์žˆ๋‹ค.

 

๊ธฐ๋ณธ ์ธ์ฝ”๋”ฉ๋œ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•ด ์•„๋ž˜์™€ ๊ฐ™์ด removingPercentEncoding ํ”„๋กœํผํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋””์ฝ”๋”ฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค. 

๋”๋ณด๊ธฐ
์ด๋ฏธ์ง€ ํด๋ฆญ ์‹œ ๊ณต์‹๋ฌธ์„œ๋กœ ์ด๋™

 

๋ฆฌ์‹œ๋ฒ„์—์„œ ํผ์„ผํŠธ ์ธ์ฝ”๋”ฉ๋œ ๋ชจ๋“  ์‹œํ€€์Šค๋ฅผ UTF-8 ๋ฌธ์ž๋กœ ๋Œ€์ฒดํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

 

๋ฐ˜ํ™˜ ๊ฐ’:
ํผ์„ผํŠธ ์ธ์ฝ”๋”ฉ๋œ ์‹œํ€€์Šค๊ฐ€ ์ œ๊ฑฐ๋œ ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ, ๋ฆฌ์‹œ๋ฒ„์— ์ž˜๋ชป๋œ ํผ์„ผํŠธ ์ธ์ฝ”๋”ฉ ์‹œํ€€์Šค๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉด nil์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

 

์ค‘์š”:
์ด ๋ฉ”์„œ๋“œ๋Š” ํผ์„ผํŠธ ์ธ์ฝ”๋”ฉ๋œ ๋ฌธ์ž์—ด์—๋งŒ ํ˜ธ์ถœํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํผ์„ผํŠธ ์ธ์ฝ”๋”ฉ๋˜์ง€ ์•Š์€ ๋ฌธ์ž์—ด์— ์ด ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ํผ์„ผํŠธ ๋ฌธ์ž๊ฐ€ ํผ์„ผํŠธ ์ธ์ฝ”๋”ฉ ์‹œํ€€์Šค์˜ ์‹œ์ž‘์œผ๋กœ ์ž˜๋ชป ํ•ด์„๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

๋””์ฝ”๋”ฉ ๋œ ํ‚ค๋ฅผ ๋น„๊ตํ•ด๋ณธ๋‹ค๋ฉด ์œ„์™€ ๊ฐ™์ด ํŠน์ˆ˜๋ฌธ์ž๊ฐ€ %๋กœ ํผ์„ผํŠธ์ธ์ฝ”๋”ฉ๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. 

 

 

 

์ด๋ ‡๊ฒŒ ๋””์ฝ”๋”ฉ๋œ ํ‚ค๋ฅผ ์ƒ์ˆ˜๋กœ ํ• ๋‹นํ•ด์„œ url์„ ๋งŒ๋“ค์—ˆ์œผ๋‚˜ +๋ฅผ ์ œ์™ธํ•œ ํŠน์ˆ˜๋ฌธ์ž๋งŒ ์ธ์ฝ”๋”ฉ์ด ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. 

 

URLComponents๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ž๋™์œผ๋กœ URL์ธ์ฝ”๋”ฉ ์ฒ˜๋ฆฌ๊ฐ€ ๋œ๋‹ค.

ํŠน์ˆ˜๋ฌธ์ž๋‚˜ ๊ณต๋ฐฑ์ด ํฌํ•จ๋œ ๊ฒฝ์šฐ ์ž๋™์œผ๋กœ ํผ์„ผํŠธ ์ธ์ฝ”๋”ฉ์„ ์ ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.


๊ทธ๋Ÿฌ๋‚˜ ์—ฌ๊ธฐ์„œ +๋งŒ ํผ์„ผํŠธ ์ธ์ฝ”๋”ฉ์ด ๋˜์ง€ ์•Š๋Š” ์ด์œ ๋Š”, +๊ฐ€ ์ฟผ๋ฆฌ ํŒŒ๋ผ๋ฏธํ„ฐ์—์„œ ๊ณต๋ฐฑ์„ ๋‚˜ํƒ€๋‚˜๋Š” ํ‘œ์ค€ ๋ฌธ๋ฒ•์œผ๋กœ ์‚ฌ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. 

RFC 3986์— ๋”ฐ๋ผ ์ฟผ๋ฆฌ ๋ฌธ์ž์—ด์—์„œ +๋Š” ๊ณต๋ฐฑ(%20)์œผ๋กœ ํ•ด์„๋œ๋‹ค.

+๋Š” ๊ณต๋ฐฑ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํŠน์ˆ˜ ๋ฌธ์ž๋กœ ์ง€์ •๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— URL ์ฟผ๋ฆฌ ํŒŒ๋ผ๋ฏธํ„ฐ์—์„œ ์ธ์ฝ”๋”ฉ๋˜์ง€ ์•Š์œผ๋ฉฐ,

๋‚˜๋จธ์ง€ ํŠน์ˆ˜ ๋ฌธ์ž(์˜ˆ: =, &)๋Š” ์ž๋™์œผ๋กœ ํผ์„ผํŠธ ์ธ์ฝ”๋”ฉ๋œ๋‹ค.

 

 

๋”๋ณด๊ธฐ

 

URL์„ ๊ตฌ์„ฑ ์š”์†Œ๋กœ ๋ถ„ํ•ดํ•˜๊ณ , ์ด๋“ค ๊ตฌ์„ฑ ์š”์†Œ๋กœ๋ถ€ํ„ฐ URL์„ ์ƒ์„ฑํ•˜๋Š” ๊ตฌ์กฐ์ฒด์ž…๋‹ˆ๋‹ค.

์ด ๊ตฌ์กฐ์ฒด๋Š” RFC 3986์— ๋”ฐ๋ผ URL์„ ๋ถ„์„ํ•˜๊ณ  ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ตฌ์กฐ์ฒด์˜ ๋™์ž‘์€ ๊ตฌํ˜• RFC์— ๋”ฐ๋ฅด๋Š” URL ๊ตฌ์กฐ์ฒด์™€ ๋ฏธ์„ธํ•˜๊ฒŒ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ URLComponents ๊ฐ’์„ ๊ธฐ๋ฐ˜์œผ๋กœ URL ๊ฐ’์„ ์‰ฝ๊ฒŒ ์–ป๊ฑฐ๋‚˜ ๊ทธ ๋ฐ˜๋Œ€๋กœ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

 

RFC 3986์— ๊ด€๋ จ๋œ ๊ธ€

https://medium.com/a-day-of-a-programmer/swift-url-%EC%9D%B8%EC%BD%94%EB%94%A9-%EB%AC%B8%EC%A0%9C-%EB%81%9D%EC%9E%A5%EB%82%B4%EA%B8%B0-5c915225edb1 

 

addingPercentEncoding(withAllowedCharacters:) ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ

API ์„œ๋น„์Šค ํ‚ค์— ๋Œ€ํ•ด์„œ CharacterSet์„ ์ง์ ‘ ์ •์˜ํ•˜์—ฌ ํ•„์š”ํ•œ ํŠน์ˆ˜๋ฌธ์ž๋ฅผ ์ˆ˜๋™์œผ๋กœ ์ธ์ฝ”๋”ฉํ•ด์ฃผ๊ธฐ๋กœ ํ–ˆ๋‹ค. 

 

๋”๋ณด๊ธฐ

**์ฐธ๊ณ ) CharacterSet **

Unicode character์˜ ๋ชจ์Œ์ด๋‹ค. ์ด CharacterSet์„ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌํ•ด์„œ ๋ฌธ์ž์—ด์„ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

์ด๋ฏธ์ง€๋ฅผ ํด๋ฆญํ•˜๋ฉด ๊ณต์‹๋ฌธ์„œ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

ํŠน์ • ์ง‘ํ•ฉ์— ํฌํ•จ๋˜์ง€ ์•Š์€ ๋ชจ๋“  ๋ฌธ์ž๋ฅผ ํผ์„ผํŠธ ์ธ์ฝ”๋”ฉ ๋ฌธ์ž๋กœ ๋Œ€์ฒดํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

-> ์ฆ‰, ํŠน์ • ์ง‘ํ•ฉ์— ํฌํ•จ๋œ ๋ฌธ์ž๋“ค์€ ์ธ์ฝ”๋”ฉ ๋˜์ง€ ์•Š๋Š”๋‹ค.

-> ๋‚˜์˜ ๊ฒฝ์šฐ์—๋Š” +๋งŒ ํŠน์ •์ง‘ํ•ฉ์— ํฌํ•จ๋˜์ง€ ์•Š๊ฒŒ ํ•ด์•ผํ•œ๋‹ค๋Š” ๊ฒƒ.

 

๋งค๊ฐœ๋ณ€์ˆ˜

allowedCharacters: ๋ฌธ์ž์—ด์—์„œ ๋Œ€์ฒด๋˜์ง€ ์•Š๋Š” ๋ฌธ์ž๋“ค์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ, URL ๊ตฌ์„ฑ ์š”์†Œ์— ๋Œ€ํ•œ ๋ฏธ๋ฆฌ ์ •์˜๋œ ๋ฌธ์ž ์ง‘ํ•ฉ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, urlPathAllowed๋‚˜ urlQueryAllowed์™€ ๊ฐ™์€ ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

**์ฐธ๊ณ ) urlQueryAllowed **

์ฟผ๋ฆฌ URL ๊ตฌ์„ฑ ์š”์†Œ์—์„œ ํ—ˆ์šฉ๋˜๋Š” ๋ฌธ์ž์˜ ๋ฌธ์ž ์ง‘ํ•ฉ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

 

**์ฐธ๊ณ ) urlQueryAllowed **

CharacterSet์€ ์œ ๋‹ˆ์ฝ”๋“œ ํ˜ธํ™˜ ๋ฌธ์ž์˜ ์ง‘ํ•ฉ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. Foundation ํƒ€์ž…์€ CharacterSet์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ž๋“ค์„ ๊ทธ๋ฃนํ™”ํ•˜์—ฌ ๊ฒ€์ƒ‰ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ๊ฒ€์ƒ‰ ์ค‘ ํŠน์ • ๋ฌธ์ž ์ง‘ํ•ฉ์— ์†ํ•˜๋Š” ๋ฌธ์ž๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

๋ฐ˜ํ™˜ ๊ฐ’

์ธ์ฝ”๋”ฉ๋œ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•˜๊ฑฐ๋‚˜, ๋ณ€ํ™˜์ด ๋ถˆ๊ฐ€๋Šฅํ•  ๊ฒฝ์šฐ nil์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

 

์„ค๋ช…

์ „์ฒด URL ๋ฌธ์ž์—ด์€ ํผ์„ผํŠธ ์ธ์ฝ”๋”ฉ๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ฐ URL ๊ตฌ์„ฑ ์š”์†Œ๋Š” ํ—ˆ์šฉ๋˜๋Š” ๋ฌธ์ž์˜ ์„œ๋กœ ๋‹ค๋ฅธ ์ง‘ํ•ฉ์„ ์ง€์ •ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, URL์˜ ์ฟผ๋ฆฌ ๊ตฌ์„ฑ ์š”์†Œ๋Š” "@" ๋ฌธ์ž๋ฅผ ํ—ˆ์šฉํ•˜์ง€๋งŒ, ์ด ๋ฌธ์ž๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ ๊ตฌ์„ฑ ์š”์†Œ์—์„œ๋Š” ํผ์„ผํŠธ ์ธ์ฝ”๋”ฉ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

UTF-8 ์ธ์ฝ”๋”ฉ์ด ์˜ฌ๋ฐ”๋ฅธ ํผ์„ผํŠธ ์ธ์ฝ”๋”ฉ ๋ฌธ์ž๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. allowedCharacters์— ์žˆ๋Š” 7๋น„ํŠธ ASCII ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚œ ๋ฌธ์ž๋Š” ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค.

 

์ค‘์š”

์ด๋ฏธ ํผ์„ผํŠธ ์ธ์ฝ”๋”ฉ๋œ ๋ฌธ์ž์—ด์— ์ด ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฏธ ํผ์„ผํŠธ ์ธ์ฝ”๋”ฉ๋œ ๋ฌธ์ž์—ด์— ์ด ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด, ํผ์„ผํŠธ ์ธ์ฝ”๋”ฉ๋œ ์‹œํ€€์Šค์˜ ํผ์„ผํŠธ ๋ฌธ์ž๊ฐ€ ๋‘ ๋ฒˆ ํผ์„ผํŠธ ์ธ์ฝ”๋”ฉ๋ฉ๋‹ˆ๋‹ค.

 

 

๊ทธ๋ ‡๋‹ค๋ฉด ๋‚ด๊ฐ€ ํ•ด์•ผํ•  ์ผ:  "+"๋งŒ ์ธ์ฝ”๋”ฉ์„ ์ง์ ‘ํ•ด์„œ url์„ ๋งŒ๋“ค ๊ฒƒ!!

 

๊ทผ๋ฐ ์ด๊ฒŒ ์ง„์งœ ๋„ˆ๋ฌด ์–ด๋ ค์› ๋‹ค.... ๐Ÿฅน

 

 

 

 

 

percentEncodedQuery๋Š” URLComponents์— ์„ค์ •๋œ ์ฟผ๋ฆฌ ์•„์ดํ…œ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํผ์„ผํŠธ ์ธ์ฝ”๋”ฉ ๋œ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. 

์ด๋•Œ, +๋Š” ๊ณต๋ฐฑ์˜ ๋Œ€์ฒด ๋ฌธ์ž๋กœ ํ•ด์„ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€ํ™˜ ๋˜์ง€ ์•Š์€ ๊ฒƒ.

 

๋งˆ์ง€๋ง‰์— urlComponents.percentEncodedQuery = plusEncodedQuery๋ฅผ ํ• ๋‹น ํ•ด์ฃผ๋Š” ์ด์œ ๋Š” 

์ธ์ฝ”๋”ฉ ๋œ + ์˜ ์ฟผ๋ฆฌ ๋ฌธ์ž์—ด์„ ๋‹ค์‹œ ํ• ๋‹นํ•ด์ค˜์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ.

 

 

๋ฐ์ดํ„ฐ๊ฐ€ ์ œ๋Œ€๋กœ ๋“ค์–ด ์˜จ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค....!!!

 


๋‘ ๋ฒˆ์งธ ์ด์Šˆ...

 

 

๋ฌธ์ œํ•ด๊ฒฐ2

iOS10๋ถ€ํ„ฐ๋Š” ATS(App Transport Security)๊ฐ€ ๊ฐ•ํ™”๋˜์–ด ๋ณด์•ˆ์ด ์•ˆ์ „ํ•˜์ง€ ์•Š์€ Https ํŠธ๋ž˜ํ”ฝ์„ ๋น„ํ™œ์„ฑํ™” ์‹œํ‚จ๋‹ค๊ณ  ํ•œ๋‹ค.

Info.plist์—์„œ ATS setting์„ ์ˆ˜์ •ํ•จ์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค.

 

 

 

https://leetaek.tistory.com/3


์—ฌ๊ธฐ์„œ ์ง๋ฉดํ•œ ๋˜ ๋‹ค๋ฅธ ๋ฌธ์ œ

endpoint๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ  ์ค‘ ํ•˜๋‚˜๋Š” ํ˜•์‹์ด ๋‹ค๋ฅธ url๋“ค์„ ์‰ฝ๊ฒŒ ๋งŒ๋“ค๊ณ  ๋„คํŠธ์›Œํฌ๋งค๋‹ˆ์ €์—์„œ ํ•˜๋‚˜์˜ ๋ฉ”์„œ๋“œ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์ด์œ ๋„ ์žˆ๋‹ค. ํ˜„์žฌ ๋‹ค๋ฅธ API๋“ค์€ ์ œ๋Œ€๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„๊ณ ์˜ค ์žˆ์œผ๋‚˜, ์ด ์„œ๋น„์Šค ํ‚ค ํ•˜๋‚˜๋กœ ์ธํ•ด์„œ ๋„คํŠธ์›Œํฌ๋งค๋‹ˆ์ €์—์„œ ์„œ๋น„์Šคํ‚ค๋ฅผ ๋”ฐ๋กœ ์ฒ˜๋ฆฌ ํ•ด์•ผํ•˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค. ์ด๋Š” ๋„คํŠธ์›Œํฌ ์š”์ฒญ์„ ๊ด€๋ฆฌํ•˜๋Š” NetworkManager์—์„œ ์ฟผ๋ฆฌํŒŒ๋ผ๋ฏธํ„ฐ ์ธ์ฝ”๋”ฉ๊นŒ์ง€ ์ˆ˜ํ–‰ํ•ด์•ผํ•˜๋Š”๊ฐ€์— ๋Œ€ํ•œ ์˜๋ฌธ์ด ๋“ค๊ฒŒ ํ•œ๋‹ค. 

 

์ถ”๊ฐ€์ ์œผ๋กœ ์ฟผ๋ฆฌ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํ—ค๋” ํŒŒ๋ผ๋ฏธํ„ฐ๋‚˜ path ๋“ฑ์—๋„ ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•œ๋‹ค๋ฉด,,,?

ํ˜„์žฌ ๋„คํŠธ์›Œํฌ ๋งค๋‹ˆ์ €์—์„œ ์ฒ˜๋ฆฌํ•˜๊ธฐ์—๋Š” ์ฑ…์ž„์— ์žˆ์–ด ๋ชจํ˜ธํ•ด์ง€์ง€ ์•Š์„๊นŒ๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ ๋‹ค. 

 

 

๋ฌธ์ œํ•ด๊ฒฐ3

์‹œ๋„ํ•ด ๋ณธ ๋ฐฉ๋ฒ•์€ extension์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. 

URLComponents๋Š” ๊ตฌ์กฐ์ฒด๋กœ ์ธ์Šคํ„ด์Šค ๋‚ด์—์„œ ์†์„ฑ์„ ์ˆ˜์ •ํ•˜๋ ค๋ฉด mutating ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ์†์„ฑ ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ–ˆ๋‹ค. 

-> self.perenteEncodedQuery ๊ฐ’์„ ์ˆ˜์ •ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ.

 

path๋‚˜ URLComponents์˜ ๋‹ค๋ฅธ ์†์„ฑ์—๋„ ์ธ์ฝ”๋”ฉ ๋กœ์ง์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ด ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ๋Š” ์ข€ ๋” ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์žˆ๋Š”์ง€ ์•Œ์•„๋ด์•ผํ•  ๊ฒƒ ๊ฐ™๋‹ค.  

 

 

 

 

Refence
- https://zeddios.tistory.com/1103

 

๊ด€๋ จ๊ธ€ ๋”๋ณด๊ธฐ