๐Ÿ‘จโ€๐ŸŽ“
Today I Learned
  • Today-I-Learend
  • ๐ŸŽWWDC
    • Developer Tools
      • Testing in Xcode
    • UIKit
      • UIDiffableDataSource
        • [WWDC 19] Advances in UI Data Sources
      • [WWDC2019] Advances in CollectionView Layout
  • ์ž๋ฃŒ๊ตฌ์กฐ
    • Heap ์ž๋ฃŒ๊ตฌ์กฐ
  • Clean code
    • ๋„ค์ด๋ฐ
    • ์ฃผ์„๊ณผ ํฌ๋งทํŒ…
    • ํ•จ์ˆ˜
    • ํด๋ž˜์Šค
    • ์—๋Ÿฌ ํ•ธ๋“ค๋ง
    • ๊ฐ€๋…์„ฑ ๋†’์ด๊ธฐ
    • ๊ฐ์ฒด์ง€ํ–ฅ
  • Network
    • RestAPI
  • Swift
    • DateType
    • ARC
    • Availablity
    • KeyPath
    • Network
    • Neverํƒ€์ž…
    • Result
    • Selector
    • ๊ฒ€์ฆํ•จ์ˆ˜
    • ๋ฉ”ํƒ€ํƒ€์ž…
    • ๋™์‹œ์„ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
    • ๋ฉ”๋ชจ๋ฆฌ ์•ˆ์ „
    • ์—๋Ÿฌ์ฒ˜๋ฆฌ
    • ์ ‘๊ทผ์ œ์–ด (Access Control)
    • ์ œ๋„ค๋ฆญ
    • ์ฃผ์š” ํ”„๋กœํ† ์ฝœ
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜
    • ๊ทธ๋ž˜ํ”„
    • ๊ธฐ์ดˆ ์•Œ๊ณ ๋ฆฌ์ฆ˜
    • ๋ˆ„์ ํ•ฉ(Prefix)
    • ๋ณต์žก๋„
    • ๋น„ํŠธ๋งˆ์Šคํ‚น
  • ์šด์˜์ฒด์ œ
    • ์šด์˜์ฒด์ œ์˜ ๊ฐœ์š”
    • ํ”„๋กœ์„ธ์Šค์™€ ์Šค๋ ˆ๋“œ
    • CPU ์Šค์ผ€์ค„๋ง
    • ํ”„๋กœ์„ธ์Šค ๋™๊ธฐํ™”
    • ๊ต์ฐฉ์ƒํƒœ
    • 07. ๋ฉ”๋ชจ๋ฆฌ
    • 08.๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ
    • ์ž…์ถœ๋ ฅ ์žฅ์น˜
    • ํŒŒ์ผ ์‹œ์Šคํ…œ
  • UIKit
    • UITableView xib์œผ๋กœ ๋งŒ๋“ค์–ด๋ณด๊ธฐ
  • ๐Ÿ–Š๏ธ์ •๋ณด ๊ธฐ๋ก
    • ์ฝ”์ฝ”์•„ํŒŸ ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•
  • iOS Project
    • ์ฑ„ํŒ… ์•ฑ ๋งŒ๋“ค๊ธฐ
      • Trouble shooting
      • 1. ๋””์ž์ธ
      • 2. AutoLayout
    • ๋‚ ์”จ ์กฐํšŒ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜
      • Figma๋ฅผ ์ด์šฉํ•œ UI ์„ค๊ณ„
      • TableView ์—ฐ๊ฒฐํ•˜๊ธฐ
      • Networking
    • MVC -> MVVM์œผ๋กœ ๊ตฌ์กฐ ๋ณ€๊ฒฝํ•ด๋ณด๊ธฐ
      • MVC
      • MVVM
    • OAuth Project
      • ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ๋ฅผ ์ด์šฉํ•œ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€ ์ œ์ž‘
      • Github์˜ OAuth App ์„ค์ •
    • Rest API ํ”„๋กœ์ ํŠธ
      • UI์„ค๊ณ„ (with Figma)
      • Network Model
      • MVVM ๊ตฌ์กฐ ์ „ํ™˜
  • ๐Ÿ•ถ๏ธUIKit
    • Compositional Layout
Powered by GitBook
On this page
  • ARC ๋ชฉ์ฐจ
  • ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์˜ ๊ฐ„๋‹จํ•œ ์ดํ•ด
  • www (world wide web)์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ธฐ์ˆ 
  • HTTP (HyperText Transfer Protocol)
  • HTTP ์š”์ฒญ ๋ฉ”์„œ๋“œ ์ข…๋ฅ˜ (CRUD)
  • HTTP ์‘๋‹ต ์ƒํƒœ ์ฝ”๋“œ
  • iOS์˜ ๋„คํŠธ์›Œํ‚น
  • iOS์—์„œ์˜ ๋ฐ์ดํ„ฐ ์š”์ฒญ ๋‹จ๊ณ„
  • URL Session
  1. Swift

Network

PreviousKeyPathNextNeverํƒ€์ž…

Last updated 2 years ago

ARC ๋ชฉ์ฐจ

    • www๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ธฐ์ˆ 

    • HTTP๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

    • HTTP ์š”์ฒญ ๋ฉ”์„œ๋“œ ์ข…๋ฅ˜

    • HTTP ์‘๋‹ต ์ƒํƒœ ์ฝ”๋“œ

    • iOS์—์„œ์˜ ๋ฐ์ดํ„ฐ ์š”์ฒญ ๋‹จ๊ณ„

    • URL Session

๋„คํŠธ์›Œํฌ ํ†ต์‹ ์˜ ๊ฐ„๋‹จํ•œ ์ดํ•ด

www (world wide web)์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ธฐ์ˆ 

  1. HTML

  2. HPPT

  3. URL

HTTP (HyperText Transfer Protocol)

  • ํ•˜์ดํผ ๋ฌธ์„œ๋ฅผ ์ „์†กํ•˜๋Š” ๊ฒƒ์—์„œ ์‹œ์ž‘๋˜์—ˆ๋‹ค.

    • ํ˜„์žฌ๋Š” ์ด๋ฏธ์ง€, ์˜์ƒ, ์Œ์„ฑ, json ๋“ฑ ๋ชจ๋“  ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ์ธํ„ฐ๋„ท์˜ ๋ชจ๋“  ๊ฒƒ์€ HTTP๋กœ ๊ตฌ์„ฑ ๋ผ ์žˆ๋‹ค.

  • RFC ๋ฌธ์„œ : HTTP์— ๊ด€๋ จ๋œ ๋‚ด์šฉ์ด ๊ธฐ์ˆ  ๋ผ ์žˆ๋‹ค.

  • HTTP : Request

    • ํ˜•์‹์ด ์žˆ๋Š” ํŽธ์ง€์ง€

    • ์•ฑ๋‹จ์—์„œ ์ด๋ฃจ์–ด์ง„๋‹ค.

      • ๊ฐ ์–ดํ”Œ์—์„œ HTTP ๋ฃฐ์— ๋งž์ถฐ ํŽธ์ง€ ์ž‘์„ฑ โ†’ ์•ฑ์—์„œ ํŽธ์ง€์ง€๋ฅผ ๋˜์ง€๊ณ , iOS์— ์ „๋‹ฌํ•œ๋‹ค.

      • iOS๋Š” ํŽธ์ง€๋ฅผ ๋ฐ›์•„ ๊ฐ๊ฐ ๋‹ค๋ฅธ Port ๋ฒˆํ˜ธ๋ฅผ ๋ถ™์ธ๋‹ค.

      • ํŽธ์ง€๋ฅผ ๋ณด๋‚ผ ๊ณณ์˜ ์ฃผ์†Œ๋ฅผ ๋ถ™์ธ๋‹ค.(IP) โ†’ ์ „๋‹ฌํ•œ๋‹ค.

      • LAN : MAC ์ฃผ์†Œ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค โ†’ ์„œ๋ฒ„๋กœ ์ „๋‹ฌํ•œ๋‹ค.

  • HTTP: ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ์ฃผ๊ณ  ๋ฐ›์„์ง€์— ๋Œ€ํ•œ ์•ฝ์†(์š”์ฒญ: request, ์‘๋‹ต: response)

  • TCP : ์ฃผ๊ณ ๋ฐ›์„ ๋•Œ ์ƒํƒœ ํ™•์ธ ๋ฐ ๊ฒ€์ฆ / PORT : ์–ด๋–ค ์•ฑ๊ณผ ํ†ต์‹ ํ•˜๋Š”์ง€


ํด๋ผ์ด์–ธํŠธ๊ฐ€ Request (์š”์ฒญ)์„ ๋ณด๋‚ด๋ฉด, ์„œ๋ฒ„์—์„œ Response(์‘๋‹ต)์„ ์ค€๋‹ค.

  1. HTTP ์š”์ฒญ ๋ฉ”์‹œ์ง€

    ์‹œ์ž‘๋ผ์ธ : ๋ฉ”์†Œ๋“œ, ์š”์ฒญ ๋Œ€์ƒ, (๊ฒฝ๋กœ) , HTTP ๋ฒ„์ „ header (ํ—ค๋” ํ•„๋“œ) : ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ (๋ชจ๋“  ๋ถ€๊ฐ€ ์ •๋ณด) ๊ณต๋ฐฑ๋ผ์ธ message body (๋ฉ”์„ธ์ง€ ๋ณธ๋ฌธ) : ์‹ค์ œ ์ „์†กํ•  ๋ฐ์ดํ„ฐ


  1. HTTP ์‘๋‹ต ๋ฉ”์„ธ์ง€ : HTTP ๋ฒ„์ „, ์ƒํƒœ์ฝ”๋“œ, ๋ฌธ๊ตฌ

    ์‹œ์ž‘๋ผ์ธ header (ํ—ค๋” ํ•„๋“œ) ๊ณต๋ฐฑ๋ผ์ธ message body (๋ฉ”์„ธ์ง€ ๋ณธ๋ฌธ) : ์‹ค์ œ ์ „์†กํ•  ๋ฐ์ดํ„ฐ


HTTP ์š”์ฒญ ๋ฉ”์„œ๋“œ ์ข…๋ฅ˜ (CRUD)

  1. GET (Read)

    • ์กฐํšŒ (๊ฒŒ์‹œํŒ ๊ธ€ ์ฝ์–ด์˜ค๊ธฐ)

  2. POST (Create)

    • ๋“ฑ๋กํ•˜๊ธฐ (๊ฒŒ์‹œํŒ ๊ธ€ ์“ฐ๊ธฐ, ๋Œ“๊ธ€ ๋‹ฌ๊ธฐ, ์ƒˆ๋กœ์šด ์ฃผ๋ฌธ ์ƒ์„ฑ)

  3. PUT (Update)

    • ๋ฐ์ดํ„ฐ ๋Œ€์ฒด, ์—†์œผ๋ฉด ์ƒ์„ฑ (๊ฒŒ์‹œ๊ธ€ ์ˆ˜์ •)

  4. PATCH

    • PUT์—์„œ ํ•„์š”ํ•œ ๋ถ€๋ถ„ ๋ณ€๊ฒฝ (์ข‹์•„์š” ๋ˆ„๋ฅด๊ธฐ)

  5. DELETE

    • ์‚ญ์ œ (๊ฒŒ์‹œ๊ธ€ ์‚ญ์ œํ•˜๊ธฐ)


HTTP ์‘๋‹ต ์ƒํƒœ ์ฝ”๋“œ

  1. 2xx (success)

    • request ์ •์ƒ ์ฒ˜๋ฆฌ ์™„๋ฃŒ

  2. 4xx (Client Error)

    • client error

    • ์ž˜๋ชป๋œ ์š”์ฒญ (์„œ๋ฒ„๊ฐ€ request๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์—†์Œ)

  3. 5xx (Server Error)

    • server error

    • ์„œ๋ฒ„ ๋‚ด๋ถ€์˜ ๋ฌธ์ œ (์„œ๋ฒ„ ๋‹ค์šด, ์ผ์‹œ์ ์œผ๋กœ ์‚ฌ์šฉ ๋ถˆ๊ฐ€)

iOS์˜ ๋„คํŠธ์›Œํ‚น

iOS์—์„œ์˜ ๋ฐ์ดํ„ฐ ์š”์ฒญ ๋‹จ๊ณ„

  1. ์ฃผ์†Œ๋ฅผ ์ด์šฉํ•ด์„œ URL ๊ตฌ์กฐ์ฒด๋ฅผ ๋งŒ๋“ ๋‹ค.

  2. URL Session์„ ๋งŒ๋“ ๋‹ค. (๋„คํŠธ์›Œํ‚น์„ ํ•˜๋Š” ๊ฐ์ฒด)

  3. ์„ธ์…˜์— ์ž‘์—…์„ ๋ถ€์—ฌํ•œ๋‹ค. (์ผ์‹œ์ •์ง€ ์ƒํƒœ์˜ ์ž‘์—…)

  4. ์ž‘์—…์„ ์‹œ์ž‘ํ•œ๋‹ค. (Resume) โ†’ ๋น„๋™๊ธฐ์ ์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค.

// 1. URL ๊ตฌ์กฐ์ฒด๋ฅผ ๋งŒ๋“ ๋‹ค.
let url = "https://~์ฃผ์†Œ"
let structURL = URL(string: url)

// 2. URL Session์„ ๋งŒ๋“ ๋‹ค.
let sesson = URLSession.shared // ์‹ฑ๊ธ€ํ†ค ๊ฐ์ฒด

// 3. ์„ธ์…˜์— ์ž‘์—…์„ ๊ตฌํ˜„ํ•œ๋‹ค.
let task = session.dataTask(with structURL) { data, response, error in
    if let error {
        print(error)
        return
    }
    if let data {
        print(String(decoding: data, as UTF8.self) // JSON
    }
}

// 4. ์ž‘์—…์„ ์‹œ์ž‘ํ•œ๋‹ค.
task.resume()

์ดํ›„ ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉ ํ•  class๋‚˜ struct๋กœ ๋ฐ”๊ฟ”์„œ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

URL Session

  1. URL ๊ตฌ์กฐ์ฒด

  2. URL Session

  3. dataTask

  4. ์‹œ์ž‘ (resume)

โ†’ ๊ฒฐ๊ณผ๋ฅผ ์–ป์Œ

โ†’ JSON/DATA ํŒŒ์ผ์„ ์šฐ๋ฆฌ๊ฐ€ ์“ฐ๋ ค๋Š” Class, Struct๋กœ ๋ณ€ํ˜•์‹œ์ผœ์•ผํ•œ๋‹ค.

๋„คํŠธ์›Œํฌ ํ†ต์‹ ์˜ ๊ฐ„๋‹จํ•œ ์ดํ•ด
iOS์˜ ๋„คํŠธ์›Œํ‚น