ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [๊ฐ•์˜] ๋ชจ๋“  ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ HTTP ์›น ๊ธฐ๋ณธ ์ง€์‹ 2
    SPRING/INFLEARN 2021. 7. 28. 23:58

    ํ˜ธ๋‹ค๋‹ฅ

    https://inf.run/zu13

     

    ๋ชจ๋“  ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ HTTP ์›น ๊ธฐ๋ณธ ์ง€์‹ - ์ธํ”„๋Ÿฐ | ๊ฐ•์˜

    ์‹ค๋ฌด์— ๊ผญ ํ•„์š”ํ•œ HTTP ํ•ต์‹ฌ ๊ธฐ๋Šฅ๊ณผ ์˜ฌ๋ฐ”๋ฅธ HTTP API ์„ค๊ณ„ ๋ฐฉ๋ฒ•์„ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค., ์›น ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฐœ๋ฐœ์ž๋ผ๋ฉด ๋ˆ„๊ตฌ๋‚˜ OK!๊ผญ ํ•„์š”ํ•œ HTTP์˜ ํ•ต์‹ฌ์„ ์•Œ๋ ค๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๐Ÿ“ฃ ํ™•์ธํ•ด์ฃผ์„ธ์š”!๋ณธ ๊ฐ•์˜๋Š” ์ž๋ฐ” ์Šค

    www.inflearn.com

     

    3. HTTP ๊ธฐ๋ณธ

    - ๋ชจ๋“  ๊ฒƒ์ด HTTP

    HTTP ๋ฉ”์„ธ์ง€๋กœ ๊ฑฐ์˜ ๋ชจ๋“  ๊ฒƒ์„ ์ „์†กํ•  ์ˆ˜ ์žˆ๋‹ค.

     

    ํ˜„์žฌ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๋Š”๊ฑด HTTP/1.1 TCP๊ธฐ๋ฐ˜์ด๋‹ค. 2, 3๋„ ์ฆ๊ฐ€ํ•˜๋Š” ์ถ”์„ธ๊ธด ํ•จ

     

    HTTPํŠน์ง•

    ํด๋ผ์ด์–ธํŠธ ์„œ๋ฒ„ ๊ตฌ์กฐ

    ๋ฌด์ƒํƒœ ํ”„๋กœํ† ์ฝœ(์Šคํ…Œ์ด์Šค ๋ฆฌ์Šค), ๋น„์—ฐ๊ฒฐ์„ฑ

    HTTP ๋ฉ”์‹œ์ง€

    ๋‹จ์ˆœํ•จ, ํ• ๋‹น ๊ฐ€๋Šฅ

     

    - ํด๋ผ์ด์–ธํŠธ ์„œ๋ฒ„ ๊ตฌ์กฐ

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

     

    ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•œ๋‹ค.

    ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง, ๋ฐ์ดํ„ฐ๋Š” ์„œ๋ฒ„

    UI, ์‚ฌ์šฉ์„ฑ ํด๋ผ์ด์–ธํŠธ

    ๋ถ„๋ฆฌํ•˜๋ฉด ์–‘์ชฝ์ด ๋…๋ฆฝ์ ์œผ๋กœ ์ง„ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.

     

    - Stateful, Stateless

    Stateful : ์ƒํƒœ ์œ ์ง€

    Stateless : ๋ฌด์ƒํƒœ - ๋ฐฉ๊ธˆ ํ•œ ๋ง ๊ธฐ์–ตํ•˜์ง€ ๋ชปํ•˜๋Š” ์‚ฌ๋žŒ๊ณผ ๋Œ€ํ™” ๋ฌธ๋งฅ x

    ํ•˜์ง€๋งŒ! ์•ž ์ •๋ณด๋ฅผ ๊ณ„์† ์•Œ๋ ค์ฃผ๋ฉด์„œ ๋Œ€ํ™”ํ•œ๋‹ค.

     

    => ์‘๋‹ต ์„œ๋ฒ„๋ฅผ ์‰ฝ๊ฒŒ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค.

    ๋ฌดํ•œํ•œ ์„œ๋ฒ„ ์ฆ์„ค ๊ฐ€๋Šฅ(Scale out), ์ค‘๊ฐ„์— ์„œ๋ฒ„๊ฐ€ ๊บผ์ ธ๋„ ๋‹ค๋ฅธ ์„œ๋ฒ„์— ํ˜ธ์ถœ ๊ฐ€๋Šฅ

     

    ๋”ฐ๋ผ์„œ, ์ตœ๋Œ€ํ•œ ๋ฌด์ƒํƒœ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

    ์ƒํƒœ ์œ ์ง€๋ฅผ ์‚ฌ์šฉํ•ด์•ผ๋งŒ ํ•˜๋Š” ๊ฒฝ์šฐ(๋กœ๊ทธ์ธ ๋“ฑ) ์ œ์™ธ

    ๋‹จ์  : ๋ฐ์ดํ„ฐ ์–‘์ด ์ข€ ๋งŽ๋‹ค.

     

    - ๋น„ ์—ฐ๊ฒฐ์„ฑ(connectionless)

    ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ์ฃผ๊ณ  ๋ฐ›์œผ๋ฉด ์—ฐ๊ฒฐ ๋Š์–ด๋ฒ„๋ฆผ

    ์ˆ˜์ฒœ๋ช…์ด ์‚ฌ์šฉํ•ด๋„ ์‹ค์ œ ์„œ๋ฒ„์—์„œ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•˜๋Š” ์š”์ฒญ์€ ์ˆ˜์‹ญ๊ฒŒ ์ดํ•˜๋กœ ๋งค์šฐ ์ ์Œ

    ->ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

     

    ํ•˜์ง€๋งŒ,

    TCP/IP์—ฐ๊ฒฐ์„ ๋งค๋ฒˆ ์ƒˆ๋กœ ๋งบ์–ด์•ผํ•จ - 3 way handshake ์‹œ๊ฐ„ ์ถ”๊ฐ€

    ์›น ๋ธŒ๋ผ์šฐ์ €๋กœ ์‚ฌ์ดํŠธ๋ฅผ ์š”์ฒญํ•˜๋ฉด ์ˆ˜๋งŽ์€ ์ž์›์„ ๋งค๋ฒˆ ๋‹ค์šด๋กœ๋“œ ํ•ด์•ผ ๋œ๋‹ค

    ->๊ทน๋ณต : HTTP ์ง€์† ์—ฐ๊ฒฐ

     

    ์ •๋ง ๊ฐ™์€ ์‹œ๊ฐ„์— ๋”ฑ ๋งž์ถ”์–ด ๋ฐœ์ƒํ•˜๋Š” ๋Œ€์šฉ๋Ÿ‰ ํŠธ๋ž˜ํ”ฝ ๊ฒฝ์šฐ์—๋Š” ์˜๋ฏธ๊ฐ€ ์—†๋‹ค

    -> stateless๋ฅผ ๊ธฐ์–ตํ•˜์ž

     

    - HTTP ๋ฉ”์‹œ์ง€

    start-line(์‹œ์ž‘ ๋ผ์ธ)

    start-line = request-line/ status-line

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

    request-line = [HTTP๋ฉ”์„œ๋“œ] [/ ์š”์ฒญ ๋Œ€์ƒ(์ ˆ๋Œ€๊ฒฝ๋กœ)] [HTTP ๋ฒ„์ „]

    HTTP ์‘๋‹ต ๋ฉ”์‹œ์ง€

    status-line = [HTTP ๋ฒ„์ „] [์ƒํƒœ ์ฝ”๋“œ] [reason-pharse(์ƒํƒœ ์ฝ”๋“œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ๊ธ€)]

    ์ƒํƒœ ์ฝ”๋“œ - 200 ์„ฑ๊ณต 400 ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ ์˜ค๋ฅ˜ 500 ์„œ๋ฒ„ ๋‚ด๋ถ€ ์˜ค๋ฅ˜

     

    header(HTTP ํ—ค๋”)

    header-field = [ํ•„๋“œ ์ด๋ฆ„(๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„ x):] (OWS)[ํ•„๋“œ๊ฐ’](OWS) 

    ํ•„๋“œ ์ด๋ฆ„๊ณผ :๋Š” ๊ผญ ๋ถ™์–ด์•ผ ํ•จ ๋‚˜๋จธ์ง€๋Š” ๋„์–ด์“ฐ๊ธฐ ์ƒ๊ด€ x

    HTTP ์ „์†ก์— ์น ์š”ํ•œ ๋ชจ๋“  ๋ถ€๊ฐ€ ์ •๋ณด

     

    message body(HTTP ๋ฉ”์‹œ์ง€ ๋ฐ”๋””)

    ์‹ค์ œ ์ „์†กํ•  ๋ฐ์ดํ„ฐ

     

    HTTP๋Š” ๋‹จ์ˆœํ•˜๊ณ  ํ™•์žฅ์ด ๊ฐ€๋Šฅํ•˜๋‹ค

     

    2. HTTP ๋ฉ”์„œ๋“œ

    - HTTP API๋ฅผ ๋งŒ๋“ค์–ด๋ณด์ž

    URI์— ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ - ๋ฆฌ์†Œ์Šค ์‹๋ณ„

    ๋ฆฌ์†Œ์Šค์™€ ํ•ด๋‹น ๋ฆฌ์†Œ์Šค๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ํ–‰์œ„(๋ฉ”์„œ๋“œ)๋ฅผ ๋ถ„๋ฆฌํ•œ๋‹ค.

    ex) ๋ฆฌ์†Œ์Šค : ํšŒ์› , ๋ฉ”์„œ๋“œ : ์กฐํšŒ, ์ˆ˜์ • ...

     

    - HTTP ๋ฉ”์„œ๋“œ - GET, POST

    <์ฃผ์š” ๋ฉ”์„œ๋“œ>

    GET : ๋ฆฌ์†Œ์Šค ์กฐํšŒ

    POST : ์š”์ฒญ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ, ์ฃผ๋กœ ๋“ฑ๋ก์— ์‚ฌ์šฉ

    PUT : ๋ฆฌ์†Œ์Šค๋ฅผ ๋Œ€์ฒด, ํ•ด๋‹น ๋ฆฌ์†Œ์Šค๊ฐ€ ์—†์œผ๋ฉด ์ƒ์„ฑ

    PATCH : ๋ฆฌ์†Œ์Šค ๋ถ€๋ถ„ ๋ณ€๊ฒฝ

    DELETE : ๋ฆฌ์†Œ์Šค ์‚ญ์ œ

     

    GET

    ๋ฆฌ์†Œ์Šค ์กฐํšŒ

    ์„œ๋ฒ„์— ์ „๋‹ฌํ•˜๊ณ  ์‹ถ์€ ๋ฐ์ดํ„ฐ๋Š” query๋กœ ์ „๋‹ฌ.

     

    POST

    ์š”์ฒญ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ

    ๋ฉ”์‹œ์ง€ ๋ฐ”๋””๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„๋กœ ์š”์ฒญ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ->์„œ๋ฒ„๋Š” ์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌ

    1. ์ƒˆ ๋ฆฌ์†Œ์Šค ์ƒ์„ฑ ์‹ ๊ทœ ๋ฆฌ์†Œ์Šค ๋“ฑ๋ก 

    2. ํ”„๋กœ์„ธ์Šค ์ฒ˜๋ฆฌ์— ์‚ฌ์šฉ ์š”์ฒญ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ

    3. ๋‹ค๋ฅธ ๋ฉ”์„œ๋“œ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์• ๋งคํ•œ ๊ฒฝ์šฐ

    ex)๊ฒŒ์‹œํŒ ๊ธ€์“ฐ๊ธฐ, ํผ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ, ์‹ ๊ทœ ์ฃผ๋ฌธ ์ƒ์„ฑ, ๊ธฐ์กด ์ž์›์— ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€ ๋“ฑ

     

    - HTTP ๋ฉ”์„œ๋“œ - PUT, PATCH, DELETE

    PUT 

    ๋ฆฌ์†Œ์Šค๋ฅผ ๋Œ€์ฒด

    ๋ฆฌ์†Œ์Šค๊ฐ€ ์žˆ์œผ๋ฉด ๋Œ€์ฒด/ ์—†์œผ๋ฉด ์ƒ์„ฑ => ์™„์ „ํžˆ ๋Œ€์ฒด, ๋ฎ์–ด๋ฒ„๋ฆผ

    ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฆฌ์†Œ์Šค๋ฅผ ์‹๋ณ„ํ•œ๋‹ค๋Š” ์ ์ด ๊ฐ€์žฅ ํฐ ์ฐจ์ด

     

    PATCH

    ๋ฆฌ์†Œ์Šค ๋ถ€๋ถ„๋ณ€๊ฒฝ

    ์ง€์›์ด ์•ˆ๋˜๋Š” ์„œ๋ฒ„๊ฐ€ ์žˆ๊ธฐ๋„ ํ•˜๋‹ค. POST๋ฅผ ์‚ฌ์šฉ

      

    DELETE

    ๋ฆฌ์†Œ์Šค์ œ๊ฑฐ

     

    - HTTP ๋ฉ”์„œ๋“œ์˜ ์†์„ฑ

    1) ์•ˆ์ „

    GET - ์กฐํšŒ๋งŒ ํ•˜๋ฏ€๋กœ ์•ˆ์ „ํ•˜๋‹ค

    (์žฆ์€ ํ˜ธ์ถœ๋กœ ๋กœ๊ทธ๊ฐ€ ์Œ“์—ฌ ์žฅ์• ๊ฐ€ ๋‚œ๋‹ค๋Š” ๊ณ ๋ คํ•˜์ง€ ์•Š์Œ)

    ํ•˜์ง€๋งŒ ํ˜ธ์ถœ ์‹œ ๋ณ€๊ฒฝ์ด ์ผ์–ด๋‚˜๋Š” PUT, POST, DELETE๋“ฑ์€ ์•ˆ์ „ํ•˜์ง€ ์•Š๋‹ค.

     

    2) ๋ฉฑ๋“ฑ

    ํ•œ ๋ฒˆ ํ˜ธ์ถœํ•˜๋“  100๋ฒˆ ํ˜ธ์ถœํ•˜๋“  ๊ฒฐ๊ณผ๊ฐ€ ๋˜‘๊ฐ™๋‹ค.

    POST - ์ค‘๋ณต์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฉฑ๋“ฑ x

    GET, PUT, DELETE ๋“ฑ์€ ๋ฉฑ๋“ฑ์ด๋‹ค. (๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์˜ POST๋กœ ์ธํ•œ ์˜ค๋ฅ˜๋Š” ์ƒ๊ฐํ•˜์ง€ ์•Š๋Š”๋‹ค.)

    ์ž๋™ ๋ณต๊ตฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜์— ํ•„์š”ํ•œ ๊ฐœ๋…

    ์ž˜๋ชป๋œ ๊ฒƒ ๊ฐ™์„ ๋•Œ, ๋˜‘๊ฐ™์€ ์š”์ฒญ์„ ๋‹ค์‹œ ํ•ด๋„ ๋˜๋Š”๊ฐ€?

     

    3) ์บ์‹œ ๊ฐ€๋Šฅ

    ์‘๋‹ต ๊ฒฐ๊ณผ ๋ฆฌ์†Œ์Šค๋ฅผ ์บ์‹œํ•ด์„œ ์‚ฌ์šฉํ•ด๋„ ๋˜๋Š”๊ฐ€?

    GET, HEAD ์บ์‹œ ๊ฐ€๋Šฅ POST, PATCH ๊ฐ€๋Šฅํ•˜๊ธฐ๋Š” ํ•˜๋‚˜ ์‹ค๋ฌด์—์„œ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ

    ์บ์‹œ๋ฅผ ํ•˜๋ ค๋ฉด ์บ์‹œ ํ‚ค๋ฅผ ๊ณ ๋ คํ•ด์•ผ ํ•˜๋Š”๋ฐ ๊ตฌํ˜„์ด ์‰ฝ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

     

Designed by Tistory.