[SeSAC] 220802 TIL

2022. 8. 10. 03:09ยท๐ŸŒฑ SeSAC
๋ชฉ์ฐจ
  1. App Transport Security
  2. ๋ฐ์ดํ„ฐ ๋ฆฌ๋กœ๋“œ ์‹œ์ 
  3.  
  4.  
  5. ์ธ์ฆํ‚ค
  6. URL ๊ด€๋ฆฌํ•˜๊ธฐ
  7. REST API
  8. API ์š”์ฒญ ํ˜•์‹์— ๋Œ€ํ•ด์„œ๋„ ์ž˜ ์‚ดํŽด๋ณผ ํ•„์š”๊ฐ€ ์žˆ๋‹ค.
  9. HTTP Method
  10. Endpoint
  11. REST API 6์›์น™
  12. HTTP 2๊ฐ€์ง€ ์ค‘์š”ํ•œ ํŠน์ง•
  13. REST API ๋‹จ์ 

App Transport Security

Apple ์ธก์—์„œ๋Š” ์•ฑ ์ž์ฒด์˜ ๋ณด์•ˆ์„ฑ์„ ์œ„ํ•ด์„œ ATS(App Transport Security)๋ผ๋Š” ์ •์ฑ…์„ ํ†ตํ•ด ๊ธฐ๋ณธ์ ์œผ๋กœ https ํ†ต์‹ ์„ ํ•˜๋„๋ก ์œ ๋„ํ•˜๊ณ  ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ http ์„œ๋ฒ„์™€ ํ†ต์‹ ์„ ํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. http ์„œ๋ฒ„๋กœ ํ…Œ์ŠคํŠธํ•˜๋ ค๋ฉด Info.plist์—์„œ ATS ๊ด€๋ จ ์„ค์ •์„ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

ATS๋Š” iOS 9 ๋ฒ„์ „ ์ดํ›„๋ถ€ํ„ฐ ์ ์šฉ๋œ ๊ฐœ์ธ์ •๋ณด๋ณดํ˜ธ ๊ธฐ๋Šฅ์ด๊ณ , Xcode 7 ๋ฒ„์ „ ์ด์ƒ์—์„œ ์•ฑ ์ƒ์„ฑ ์‹œ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ๊ฐ€์ ธ๊ฐ€๊ฒŒ ๋˜๋Š” ๋ณด์•ˆ ์ •์ฑ…์ด๋‹ค.

  1. http : Allow Arbitrary Loads๋ฅผ YES๋กœ ๋ณ€๊ฒฝ
  2. https : ๊ตณ์ด ์„ค์ •์„ ํ•ด์ค„ ํ•„์š”๊ฐ€ ์—†์Œ

๋ฐ์ดํ„ฐ ๋ฆฌ๋กœ๋“œ ์‹œ์ 

  • ํ…Œ์ด๋ธ” ๋ทฐ๋‚˜ ์ปฌ๋ ‰์…˜ ๋ทฐ ์‚ฌ์šฉ ์‹œ
  • viewDidLoad ์‹œ์ ์— ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ 0์ด์–ด์„œ ํ…Œ์ด๋ธ” ๋ทฐ์— ๊ทธ๋ ค์ง€๋Š” ๋‚ด์šฉ์ด ์—†์—ˆ๋Š”๋ฐ ์ค‘๊ฐ„์— ๋ฐ์ดํ„ฐ๊ฐ€ 3์ด ๋˜์—ˆ๋‹ค๋ฉด ํ•ด๋‹น ๋‚ด์šฉ์„ ๊ฐ€์ง€๊ณ  ๋‹ค์‹œ ๊ทธ๋ ค์ค„ ํ•„์š”๊ฐ€ ์žˆ์Œ. ์ด๋ฅผ ๊ฐฑ์‹ ํ•œ๋‹ค ๋˜๋Š” ๋ฆฌ๋กœ๋“œํ•œ๋‹ค๋ผ๊ณ  ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒ ๊ณ  ๋Œ€ํ‘œ์ ์œผ๋กœ reloadData() ๋ฉ”์„œ๋“œ๋ฅผ ๋งŽ์ด ์ด์šฉํ•œ๋‹ค.

 


 

์ธ์ฆํ‚ค

์„œ๋ฒ„์— ์š”์ฒญํ•œ๋‹ค๊ณ  ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์ž์›์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํ—ˆ์šฉ๋œ ์‚ฌ๋žŒ์—๊ฒŒ๋งŒ ์˜คํ”ˆํ•˜๋Š” ๊ฒƒ๋„ ํ•„์š”ํ•˜๋‹ค. ์ธ์ฆํ‚ค๋ฅผ ์ด์šฉํ•˜๋ฉด ํ—ˆ๊ฐ€๋œ ์‚ฌ์šฉ์ž๋งŒ ์„œ๋ฒ„์˜ ์ž์›์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ์ปจํŠธ๋กคํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ํŒŒ์ผ์„ ์˜ฌ๋ฆฌ์ง€ ์•Š๋Š” .gitignore
  • API KEY ๊ด€๋ จํ•ด์„œ ํŒŒ์ผ๋กœ ๋ชจ์•„๋†“๊ณ  ๊ด€๋ฆฌ
  • Info.plist
  • ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •
  • ...
  • ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์ด์šฉํ•˜๋Š” ๊ฒƒ ํ•œ ๋ฒˆ ์•Œ์•„๋ด์•ผ์ง€!

 


 

URL ๊ด€๋ฆฌํ•˜๊ธฐ

  • URL ์ƒ์ˆ˜๋กœ ๊ด€๋ฆฌ
  • ์ค‘๋ณต๋œ URL ์‚ฌ์šฉ ๊ด€๋ฆฌ

์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ๊ด€๋ฆฌํ• ์ง€๋Š” ๊ณ ๋ฏผ์ด ํ•„์š”, Enum์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๋ชจ์Šต๋„ ๋งŽ์ด ๋ณด์ด๋Š” ๋“ฏ ํ•˜๋‹ค.

 

 


 

REST API

  • ๋„คํŠธ์›Œํฌ ์ƒ์— ์กด์žฌํ•˜๋Š” ์ž์›๋“ค์„ ํŠน์ • ๊ทœ์•ฝ์— ๋งž์ถ”์–ด ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ
  • ์›น์˜ ์žฅ์ ์„ ํ™œ์šฉํ•œ ์•„ํ‚คํ…์ฒ˜
  • HTTP ์ƒ์—์„œ ๊ตฌํ˜„ ๊ฐ€๋Šฅ

API ์š”์ฒญ ํ˜•์‹์— ๋Œ€ํ•ด์„œ๋„ ์ž˜ ์‚ดํŽด๋ณผ ํ•„์š”๊ฐ€ ์žˆ๋‹ค.

HTTP Method

  • GET(์กฐํšŒ)+ query parameter
  • POST(์ƒ์„ฑ) + headers, parameters(body)
  • ...

Endpoint

  • ๊ณ ์œ ํ•œ ๊ฒฝ๋กœ
  • v1/user, v2/user์™€ ๊ฐ™์ด ๋ฒ„์ „ ๊ด€๋ฆฌ๋„ ๊ฐ€๋Šฅ

REST API 6์›์น™

  • Uniform Interface : ์ž์›์— ๋Œ€ํ•œ ์‹๋ณ„์ด ๊ฐ€๋Šฅํ•ด์•ผ ํ•จ, ๊ณ ์œ ํ•ด์•ผ ํ•จ
  • Stateless(๋ฌด์ƒํƒœ์„ฑ) : ํด๋ผ์ด์–ธํŠธ์˜ ์ƒํƒœ๊ฐ€ ์„œ๋ฒ„์— ์ €์žฅ๋˜์ง€ ์•Š๊ณ  ์ข…๋ฃŒ
  • Cachable : HTTP์˜ ๊ฐ•๋ ฅํ•œ ํŠน์ง•์ธ ์บ์‹ฑ ๊ธฐ๋Šฅ ํ™œ์šฉ ๊ฐ€๋Šฅ, ๋ฆฌ์†Œ์Šค๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Œ
  • Self-descriptiveness : ์˜๋„๊ฐ€ ์ง๊ด€์ ์ด์–ด์•ผ ํ•จ. ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ํ‘œํ˜„ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ ธ์•ผ ํ•จ.
  • Client-Server ๊ตฌ์กฐ
  • ๊ณ„์ธตํ˜• ๊ตฌ์กฐ

HTTP 2๊ฐ€์ง€ ์ค‘์š”ํ•œ ํŠน์ง•

  • ๋น„์—ฐ๊ฒฐ์„ฑ
  • ๋ฌด์ƒํƒœ์„ฑ

REST API ๋‹จ์ 

  • Overfetching : ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ •๋ณด๋Š” ๊ทนํžˆ ์ผ๋ถ€์ธ๋ฐ Response์— ๋„ˆ๋ฌด ๋งŽ์€ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐ™์ด ๋„˜์–ด์˜ฌ ์ˆ˜ ์žˆ์Œ.
  • Underfetching : ํ•„์š”ํ•œ ์ •๋ณด๋ณด๋‹ค ๋กœ๋”ฉ์ด ์ ์œผ๋ฉด ์ถ”๊ฐ€ API ์š”์ฒญ์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Œ

'๐ŸŒฑ SeSAC' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[SeSAC] 220804 TIL  (0) 2022.08.10
[SeSAC] 220803 TIL  (0) 2022.08.10
[SeSAC] 220801 TIL  (0) 2022.08.10
[SeSAC] 220729 TIL  (0) 2022.08.10
[SeSAC] 220728 TIL  (2) 2022.08.06
  1. App Transport Security
  2. ๋ฐ์ดํ„ฐ ๋ฆฌ๋กœ๋“œ ์‹œ์ 
  3.  
  4.  
  5. ์ธ์ฆํ‚ค
  6. URL ๊ด€๋ฆฌํ•˜๊ธฐ
  7. REST API
  8. API ์š”์ฒญ ํ˜•์‹์— ๋Œ€ํ•ด์„œ๋„ ์ž˜ ์‚ดํŽด๋ณผ ํ•„์š”๊ฐ€ ์žˆ๋‹ค.
  9. HTTP Method
  10. Endpoint
  11. REST API 6์›์น™
  12. HTTP 2๊ฐ€์ง€ ์ค‘์š”ํ•œ ํŠน์ง•
  13. REST API ๋‹จ์ 
'๐ŸŒฑ SeSAC' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [SeSAC] 220804 TIL
  • [SeSAC] 220803 TIL
  • [SeSAC] 220801 TIL
  • [SeSAC] 220729 TIL
taeeekki
taeeekki
๐ŸŒฑiOS ๊ฐœ๋ฐœ์ž๋ฅผ ๊ฟˆ๊พธ๋Š” ํ•™์ƒ์ด ๋งŒ๋“œ๋Š” ๋ธ”๋กœ๊ทธ
taeeekki
taekki.dev
taeeekki
์ „์ฒด
์˜ค๋Š˜
์–ด์ œ
  • All (130)
    • ๐ŸŒฑ SeSAC (40)
    • โ˜€๏ธ 100DaysOfSwift (18)
    • ๐ŸŽ iOS & Swift (60)
    • ๐Ÿ“ฉ Essay (3)
    • ๐ŸŽ Tip (4)
    • ๐ŸŒˆ UIUX (2)
    • ๐Ÿง OOP (1)
    • ๐Ÿฅณ Side Project (0)
    • โœจ Problem Solving (1)
    • ๐Ÿ“ Note (1)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

iOS ์•ฑ ์ถœ์‹œ
๊นƒํ—ˆ๋ธŒ
iOS UIUX
100DaysOfSwift
swift
network
IOS
CollectionView
ํด๋กœ์ €
github
๊ฐœ์ธ ์•ฑ ์ถœ์‹œ
์†ํŠธ
์˜ต์…”๋„
github tip
์Šค์œ„ํ”„ํŠธ ๋ฌธ๋ฒ•
commit
tableView
Diary App
์˜ค์˜คํˆฌ๋‘
๊ฐœ๋ฐœ
์Šค์œ„ํ”„ํŠธ๋ฌธ๋ฒ•
iOS H.I.G
OOTD
์Šค์œ„ํ”„ํŠธ
GIT
Realm
URLSession
TIL
PageViewController
SeSAC

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

hELLOยท Designed By์ •์ƒ์šฐ.v4.5.3
taeeekki
[SeSAC] 220802 TIL
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.