Network

ARC ๋ชฉ์ฐจ

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

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๋กœ ๋ณ€ํ˜•์‹œ์ผœ์•ผํ•œ๋‹ค.

Last updated