๐Ÿ“ก HTTP ์ •๋ฆฌ

Inah-_-ยท2021๋…„ 2์›” 25์ผ
0

WEB

๋ชฉ๋ก ๋ณด๊ธฐ
3/10

๐Ÿš€ Today I Learned

์ด๋ฒˆ ๋ธ”๋กœ๊น… ๊ธฐ๋ก์˜ ๋ชฉ์ ์€ HTML๋กœ ๋งŒ๋“  ์›นํŽ˜์ด์ง€๋ฅผ ์–ด๋–ป๊ฒŒ ์ฃผ๊ณ  ๋ฐ›์„ ๊ฒƒ์ธ๊ฐ€?
๋ฐฑ์—”๋“œ๊ฐ€ ํ•˜๋Š” ์ผ์€ ๋ฌด์—‡์ธ๊ฐ€? ์ด๋‹ค.

1. HTTP
2. HTTP์˜ ๋‘๊ฐ€์ง€ ํŠน์ง•
3. Request, Response ๊ตฌ์กฐ
4. HTTP Request Methods



HTTP

HTTP๋Š” HyperText Transfer Protocol์˜ ์•ฝ์ž์ด๋‹ค!

HyperText

HTML (HyperText Markup Language)
HTML์„ ๋‹ค์‹œ ์งš๊ณ  ๋„˜์–ด๊ฐ€๋ณด๋ฉด, ๋ฌธ์„œ์™€ ๋ฌธ์„œ๊ฐ€ ๋งํฌ๋กœ ์—ฐ๊ฒฐ๋˜๋„๋ก ํ•˜๋Š”
ํƒœ๊ทธ๋กœ ๊ตฌ์„ฑ๋œ ์–ธ์–ด๋ž€ ๋œป์ด๋‹ค.

Transfer

์‚ฌ์ „์  ์˜๋ฏธ๋กœ "์ „์†กํ•˜๋‹ค" ๋ผ๋Š” ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๋ฉฐ,
์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“  ์›น์‚ฌ์ดํŠธ๋ฅผ ๋„๋ฆฌ ์•Œ๋ฆฌ๊ณ  ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๊ณผ ๊ณต์œ ํ•˜๊ธฐ ์œ„ํ•ด์„œ
๋‹ค๋ฅธ ์ปดํ“จํ„ฐ์—๊ฒŒ ์ „์†กํ•ด์•ผ ํ•œ๋‹ค.
์ „์†ก์€ ๋ณด๋‚ด๋Š” ์ฃผ์ฒด์™€ ๋ฐ›๋Š” ์ฃผ์ฒด๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ํฐ ํŠน์ง•

Protocol

ํ”„๋กœํ† ์ฝœ์€ ํ˜‘์•ฝ, ํ†ต์‹  ๊ทœ์•ฝ ์ด๋ผ๋Š” ์˜๋ฏธ๋ฅผ ๊ฐ€์ง„๋‹ค.
๋ฌผ๋ฆฌ์ ์œผ๋กœ ๋–จ์–ด์ง„ ์ปดํ“จํ„ฐ ๋ผ๋ฆฌ ์–ด๋–ป๊ฒŒ HTMLํŒŒ์ผ(HyperText)์„ ์ฃผ๊ณ  ๋ฐ›์„์ง€์— ๋Œ€ํ•œ ์•ฝ์†์œผ๋กœ, ํ•œ๊ตญ์–ด๋กœ ์†Œํ†ต์„ ํ•˜๋“ฏ ์ปดํ“จํ„ฐ๋„ ์ปดํ“จํ„ฐ ๋ผ๋ฆฌ์˜ ์†Œํ†ต ๋ฐฉ๋ฒ•์ด HTTP์ด๋‹ค.

์‰ฝ๊ฒŒ ๋งํ•ด HTTP๋ž€, ์ปดํ“จํ„ฐ๋“ค๋ผ๋ฆฌ HTMLํŒŒ์ผ์„ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์†Œํ†ต๋ฐฉ์‹ ๋˜๋Š” ์•ฝ์†์ด๋‹ค.



HTTP์˜ ๋‘๊ฐ€์ง€ ํŠน์ง•

1. Request(์š”์ฒญ) / Response(์‘๋‹ต)

์†Œํ†ต์˜ ํ•ต์‹ฌ์€ ์š”์ฒญ๊ณผ ์‘๋‹ต!

์ธ๊ฐ„์˜ ์†Œํ†ต๋ฐฉ์‹์ด ์ปดํ“จํ„ฐ ๋ผ๋ฆฌ์˜ ์†Œํ†ต๋ฐฉ์‹์—๋„ ์ ์šฉ๋œ ๊ฒƒ,
HTTP์˜ ์š”์ฒญ๊ณผ ์‘๋‹ต์€ ๊ทธ์ € ๋ฉ”์‹œ์ง€์— ๋ถˆ๊ณผํ•˜๋‹ค. (http ์š”์ฒญ๊ณผ ์‘๋‹ต์€ ๋ชจ๋‘ text)
๋ณด๋‚ด๋Š” ์ฃผ์ฒด๋Š” ๋ฐ›๋Š” ์ฃผ์ฒด์—๊ฒŒ ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ , ๋ฐ›๋Š” ์ฃผ์ฒด๋Š” ์š”์ฒญ์„ ๋ณด๋‚ธ ์ฃผ์ฒด์—๊ฒŒ ์‘๋‹ต์„ ๋ณด๋‚ธ๋‹ค.

์ฆ‰, ์‚ฌ๋žŒ๋ผ๋ฆฌ์˜ ์†Œํ†ต์„ ์ปดํ“จํ„ฐ์—๊ฒŒ ์ ์šฉํ•˜์—ฌ '์š”์ฒญ'๊ณผ '์‘๋‹ต'์„ ํ•˜๊ฒŒ๋” ํ•œ ๊ฒƒ์ด๋‹ค.

2. Stateless = State(์ƒํƒœ) + less(์—†์Œ)

HTTP์— ๋Œ€ํ•œ ์„ค๋ช… ์ค‘ ์ ˆ.๋Œ€, N.E.V.E.R ์žŠ์–ด์„œ๋Š” ์•ˆ ๋  HTTP์˜ ํŠน์ง•์ด ๋ฐ”๋กœ Stateless ๋‹ค.

๊ฐ๊ฐ์˜ HTTP ํ†ต์‹ (์š”์ฒญ/์‘๋‹ต)์€ ๋…๋ฆฝ์  ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ณผ๊ฑฐ์˜ ํ†ต์‹ (์š”์ฒญ/์‘๋‹ต)์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ์ „ํ˜€ ์•Œ์ง€ ๋ชป ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ๋งค ํ†ต์‹ ๋งˆ๋‹ค ํ•„์š”ํ•œ ๋ชจ๋“  ์ •๋ณด๋ฅผ ๋‹ด์•„์„œ ์š”์ฒญ์„ ๋ณด๋‚ด์•ผ ํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์ฟ ํŒก์—์„œ ๋กœ๊ทธ์ธ ํ›„ ์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ๋ฌผ๊ฑด์„ ๋‹ด์„ ๋•Œ์™€ ๊ฐ™์€
์—ฐ์†๋œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ๋ฅผ ์œ„ํ•ด ๋กœ๊ทธ์ธ ํ† ํฐ ๋˜๋Š” ๋ธŒ๋ผ์šฐ์ €์˜ ์ฟ ํ‚ค,
์„ธ์…˜, ๋กœ์ปฌ์Šคํ† ๋ฆฌ์ง€ ๊ฐ™์€ ๊ธฐ์ˆ ์ด ํ•„์š”์— ์˜ํ•ด ๋งŒ๋“ค์–ด์กŒ๋‹ค.


Request ๋ฉ”์„ธ์ง€ ๊ตฌ์กฐ

HTTP ์š”์ฒญ์€ ์‚ฌ์‹ค ํ”„๋ก ํŠธ์—”๋“œ(ํด๋ผ์ด์–ธํŠธ) ์—์„œ ๋ฐฑ์—”๋“œ(์„œ๋ฒ„)์— ์ผ(๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ)์„ ์‹œ์ž‘ํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ๋ณด๋‚ด๋Š” ๋ฉ”์„ธ์ง€๋‹ค.

์ด ๋ฉ”์„ธ์ง€์˜ ๊ตฌ์กฐ๋Š” ํฌ๊ฒŒ ์„ธ ๋ถ€๋ถ„์œผ๋กœ ๊ตฌ์„ฑ ๋˜์–ด ์žˆ๋‹ค.

  1. Start Line: ์š”์ฒญ์˜ ์ฒซ๋ฒˆ์งธ ์ค„์— ํ•ด๋‹นํ•œ๋‹ค. ์ด ์‹œ์ž‘ ์ค„๋„ ์„ธ ๋ถ€๋ถ„์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ๋‹ค.
1. HTTP Method: ํ•ด๋‹น ์š”์ฒญ์ด ์˜๋„ํ•œ ์•ก์…˜์„ ์ •์˜ํ•˜๋Š” ๋ถ€๋ถ„. ์ฃผ๋กœ GET, POST, DELETE๊ฐ€ ๋งŽ์ด ์“ฐ์ž„
2. Request target: ํ•ด๋‹น request๊ฐ€ ์ „์†ก๋˜๋Š” ๋ชฉํ‘œ url
3. HTTP Version: ๋ง ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ๋˜๋Š” HTTP ๋ฒ„์ „์„ ๋œปํ•œ๋‹ค. ์ฃผ๋กœ 1.1 ๋ฒ„์ „์ด ๋„๋ฆฌ ์“ฐ์ž„

GET /login HTTP/1.1
ํ•ด์„: GET ๋ฉ”์†Œ๋“œ๋กœ login ์ด๋ผ๋Š” ์š”์ฒญ ํƒ€๊ฒŸ์— HTTP 1.1 ๋ฒ„์ „์œผ๋กœ ์š”์ฒญ์„ ๋ณด๋‚ด๊ฒ ๋‹ค!

  1. Headers: ํ•ด๋‹น ์š”์ฒญ์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์ •๋ณด(๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ)๋ฅผ ๋‹ด๊ณ ์žˆ๋Š” ๋ถ€๋ถ„์ด๋‹ค.
    Key: Value ๊ฐ’์œผ๋กœ ๋˜์–ด์žˆ๋‹ค (JavaScript์˜ ๊ฐ์ฒด, Python์˜ ๋”•์…”๋„ˆ๋ฆฌ ํ˜•ํƒœ๋ผ๊ณ  ๋ณด๋ฉด ๋œ๋‹ค)
    ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” **Headers** ์˜ ์ •๋ณด์—๋Š” ๋‹ค์Œ์ด ์žˆ๋‹ค 

    Headers: {
    	Host: ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ๋ชฉํ‘œ(ํƒ€๊ฒŸ)์˜ ์ฃผ์†Œ. ์ฆ‰, ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ์›น์‚ฌ์ดํŠธ์˜ ๊ธฐ๋ณธ ์ฃผ์†Œ๊ฐ€ ๋œ๋‹ค
    	(ex. www.apple.co.kr)
    	User-Agent: ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ๋Œ€ํ•œ ์ •๋ณด (ex. chrome, firefox, safari, explorer)
    	Content-Type: ํ•ด๋‹น ์š”์ฒญ์ด ๋ณด๋‚ด๋Š” ๋ฉ”์„ธ์ง€ body์˜ ํƒ€์ž… (ex. application/json)
    	Content-Length: body ๋‚ด์šฉ์˜ ๊ธธ์ด
    	Authorization: ํšŒ์›์˜ ์ธ์ฆ/์ธ๊ฐ€๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋กœ๊ทธ์ธ ํ† ํฐ์„ Authroization ์— ๋‹ด๋Š”๋‹ค
    }
  1. Body: ํ•ด๋‹น ์š”์ฒญ์˜ ์‹ค์ œ ๋‚ด์šฉ. ์ฃผ๋กœ Body๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”์†Œ๋“œ๋Š” POST๋‹ค.
    **ex) ๋กœ๊ทธ์ธ ์‹œ์— ์„œ๋ฒ„์— ๋ณด๋‚ผ ์š”์ฒญ์˜ ๋‚ด์šฉ**
    Body: {
    	"user_email": "inah.choi@gmail.com"
    	"user_password": "wecode"
    }

## Response HTTP ๊ทœ์•ฝ์— ๋”ฐ๋ฅธ ์‘๋‹ต์˜ ๊ตฌ์กฐ๋„ ๋˜ํ•œ ํฌ๊ฒŒ ์„ธ ๋ถ€๋ถ„์œผ๋กœ ๊ตฌ์„ฑ
  1. Status Line: ์‘๋‹ต์˜ ์ƒํƒœ ์ค„์ด๋‹ค. ์‘๋‹ต์€ ์š”์ฒญ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ์ƒํƒœ๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์•Œ๋ ค์ฃผ๋ฉด์„œ ๋‚ด์šฉ์„ ์‹œ์ž‘ํ•œ๋‹ค. ๋งˆ์น˜, ํŽธ์ง€์˜ ์‘๋‹ต์— "์‘. ์ž˜ ์ง€๋ƒˆ์–ด" ๋ผ๊ณ  ์•ˆ๋ถ€ ์ธ์‚ฌ๋ฅผ ๊ฑด๋„ค๋Š” ๊ฒƒ๊ณผ ๊ฐ™๋‹ค. ์‘๋‹ต์˜ Status Line ๋„ ์„ธ ๋ถ€๋ถ„์œผ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.
    1. HTTP Version: ์š”์ฒญ์˜ HTTP๋ฒ„์ „๊ณผ ๋™์ผ
    2. Status Code: ์‘๋‹ต ๋ฉ”์„ธ์ง€์˜ ์ƒํƒœ ์ฝ”๋“œ
    3. Status Text: ์‘๋‹ต ๋ฉ”์„ธ์ง€์˜ ์ƒํƒœ๋ฅผ ๊ฐ„๋žตํ•˜๊ฒŒ ์„ค๋ช…ํ•ด์ฃผ๋Š” ํ…์ŠคํŠธ

    HTTP/1.1 404 Not Found
    ํ•ด์„: HTTP 1.1 ๋ฒ„์ „์œผ๋กœ ์‘๋‹ตํ•˜๊ณ  ์žˆ๋Š”๋ฐ, ํ”„๋ก ํŠธ์—”๋“œ์—์„œ ๋ณด๋‚ธ ์š”์ฒญ(ex. ๋กœ๊ทธ์ธ ์‹œ๋„)์— ๋Œ€ํ•ด์„œ
    		 ์œ ์ €์˜ ์ •๋ณด๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์—(Not Found) 404 ์ƒํƒœ ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋‚ธ๋‹ค.

    HTTP/1.1 200 SUCCESS
    ํ•ด์„: HTTP 1.1 ๋ฒ„์ „์œผ๋กœ ์‘๋‹ตํ•˜๊ณ  ์žˆ๋Š”๋ฐ, ํ”„๋ก ํŠธ์—”๋“œ์—์„œ ๋ณด๋‚ธ ์š”์ฒญ์— ๋Œ€ํ•ด์„œ ์„ฑ๊ณตํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—
    		 200 ์ƒํƒœ ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋‚ธ๋‹ค.
  1. Headers: ์š”์ฒญ(Request)์˜ ํ—ค๋”์™€ ๋™์ผํ•˜๋‹ค. ์‘๋‹ต์˜ ์ถ”๊ฐ€ ์ •๋ณด(๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ)๋ฅผ ๋‹ด๊ณ ์žˆ๋Š” ๋ถ€๋ถ„์ด๋‹ค. ๋‹ค๋งŒ, ์‘๋‹ต์—์„œ๋งŒ ์‚ฌ์šฉ๋˜๋Š” ํ—ค๋”์˜ ์ •๋ณด๋“ค์ด ์žˆ๋‹ค. (ex. ์š”์ฒญํ•˜๋Š” ๋ธŒ๋ผ์šฐ์ €์˜ ์ •๋ณด๊ฐ€ ๋‹ด๊ธด User-Agent ๋Œ€์‹ , Server ํ—ค๋”๊ฐ€ ์‚ฌ์šฉ๋œ๋‹ค.)
  1. Body: ์š”์ฒญ(Request)์˜ Body์™€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋™์ผํ•˜๋‹ค. ์š”์ฒญ์˜ ๋ฉ”์†Œ๋“œ์— ๋”ฐ๋ผ Body๊ฐ€ ํ•ญ์ƒ ์กด์žฌํ•˜์ง€ ์•Š๋“ฏ์ด. ์‘๋‹ต๋„ ์‘๋‹ต์˜ ํ˜•ํƒœ์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์—” Body๊ฐ€ ์—†์„ ์ˆ˜๋„ ์žˆ๋‹ค. ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” Body ์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์€ JSON(JavaScript Object Notation) ์ด๋‹ค.
    ex) ๋กœ๊ทธ์ธ ์š”์ฒญ์— ๋Œ€ํ•ด ์„ฑ๊ณตํ–ˆ์„ ๋•Œ ์‘๋‹ต์˜ ๋‚ด์šฉ
    Body: {
    	"message": "SUCCESS"
    	"token": "kldiduajsadm@9df0asmzm" (์•”ํ˜ธํ™”๋œ ์œ ์ €์˜ ์ •๋ณด)
    }

HTTP Request Methods

ํ•ด๋‹น ๋ฉ”์†Œ๋“œ๋“ค์€ ํ”„๋ก ํŠธ์—”๋“œ(ํด๋ผ์ด์–ธํŠธ)์˜ ์ž…์žฅ์—์„œ ์š”์ฒญ์˜ ์˜๋„๊ฐ€ ๋‹ด๊ธด ๊ฒƒ
๋ฐฑ์—”๋“œ๋Š” ํ˜ผ๋ž€์ด ์˜ฌ ์ˆ˜ ์žˆ๋‹น

1๏ธโƒฃ GET

  • ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„๋กœ ๋ถ€ํ„ฐ ๋ฐ›์•„(GET)์˜ฌ ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”์†Œ๋“œ
  • ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ค๊ธฐ๋งŒ ํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.
  • ๊ฐ€์žฅ ๊ฐ„๋‹จํ•˜๊ณ  ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” HTTP ๋ฉ”์†Œ๋“œ (์‚ฌ์‹ค ์šฐ๋ฆฌ๊ฐ€ ์›นํŽ˜์ด์ง€๋ฅผ ๋„์šธ ๋•Œ ํ•„์š”ํ•œ ์ •๋ณด๋“ค์„ ๋ชจ๋‘ GET๋ฉ”์†Œ๋“œ๋กœ ์š”์ฒญ์„ ๋ณด๋‚ด์„œ ๋ฐ›์•„์˜จ ์‘๋‹ต์„ ํ™”๋ฉด์— ๋„์šฐ๋Š” ๊ฒƒ์ด๋‹ค)

๐Ÿ“ก ์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ๋‹ด์€ ์ œํ’ˆ์„ ์กฐํšŒํ•œ๋‹ค

(์ถ•์•ฝ๋œ ์š”์ฒญ ๋ฉ”์„ธ์ง€)
GET /shop/bag HTTP/1.1
Headers: {
	"HOST": "https://www.apple.com/kr"
	"Authroization": "kldiduajsadm@9df0asmzm" (์œ ์ €๊ฐ€ ๋ณธ์ธ์ž„์„ ์ฆ๋ช…ํ•  ์ˆ˜ ์žˆ๋Š” ์ธ์ฆ/์ธ๊ฐ€ ํ† ํฐ)
}

(์ถ•์•ฝ๋œ ์‘๋‹ต ๋ฉ”์‹œ์ง€)
HTTP/1.1 200 SUCCESS
Body: {
	"message": "SUCCESS"
	"carts": [
		{
			"productId": 10
			"name": "Pro Display XDR - Nano-texture ๊ธ€๋ž˜์Šค"
			"price": "โ‚ฉ7,899,000"
			"quantity": 1
		},
		{
			"productId": 20
			"name": "Mac Pro"
			"price": "โ‚ฉ73,376,000"
			"quantity": 2
		}	
	]
}


2๏ธโƒฃ POST

  • ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑ / ์ˆ˜์ • ํ•  ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”์†Œ๋“œ
  • ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑ ๋ฐ ์ˆ˜์ • ํ•  ๋•Œ ๋งŽ์ด ์‚ฌ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์š”์ฒญ์— body๊ฐ€ ํฌํ•จ๋˜์„œ ๋ณด๋‚ด์ง„๋‹ค

๐Ÿ‘‡ ์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ๋ง˜์— ๋“œ๋Š” ์ƒํ’ˆ์„ ๋‹ด๋Š”๋‹ค

**(์ถ•์•ฝ๋œ ์š”์ฒญ ๋ฉ”์„ธ์ง€)
POST /shop/bag HTTP/1.1**
Headers: {
	"HOST": "https://www.apple.com/kr"
	"Authroization": "kldiduajsadm@9df0asmzm" (์œ ์ €๊ฐ€ ๋ณธ์ธ์ž„์„ ์ฆ๋ช…ํ•  ์ˆ˜ ์žˆ๋Š” ์ธ์ฆ/์ธ๊ฐ€ ํ† ํฐ)
}
Body: {
	product: {
		"productId": 30
		"name": "12.9ํ˜• iPad Pro Wi-Fi + Cellular 128GB"
		"color": "์ŠคํŽ˜์ด์Šค ๊ทธ๋ ˆ์ด"
		"price": "โ‚ฉ1,499,000"
		"quantity": 1
	}
}

**(์ถ•์•ฝ๋œ ์‘๋‹ต ๋ฉ”์‹œ์ง€)
HTTP/1.1 201 SUCCESS**
Body: {
	"message": "SUCCESSFULLY CARTS UPDATED"
}

3๏ธโƒฃ DELETE

  • ๋ฉ”์†Œ๋“œ์˜ ์ด๋ฆ„์—์„œ ์œ ์ถ” ๊ฐ€๋Šฅํ•˜๋“ฏ, ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„์—์„œ ์‚ญ์ œ ์š”์ฒญ์„ ๋ณด๋‚ผ๋•Œ ์“ฐ๋Š” ๋ฉ”์†Œ๋“œ

๐Ÿ– ์žฅ๋ฐ”๊ตฌ๋‹ˆ์—์„œ ์ œํ’ˆ์„ ์‚ญ์ œํ•œ๋‹ค

**(์ถ•์•ฝ๋œ ์š”์ฒญ ๋ฉ”์„ธ์ง€)
DELETE /shop/bag HTTP/1.1**
Headers: {
	"HOST": "https://www.apple.com/kr"
	"Authroization": "kldiduajsadm@9df0asmzm" (์œ ์ €๊ฐ€ ๋ณธ์ธ์ž„์„ ์ฆ๋ช…ํ•  ์ˆ˜ ์žˆ๋Š” ์ธ์ฆ/์ธ๊ฐ€ ํ† ํฐ)
}
Body: {
	productId: 30
}

**(์ถ•์•ฝ๋œ ์‘๋‹ต ๋ฉ”์‹œ์ง€)
HTTP/1.1 201 SUCCESS**
Body: {
	"message": "productId 30 DELETED"
}



> Review


ํฌ๊ฒŒ ์„ธ๊ฐ€์ง€๋งŒ ๊ธฐ์–ต, ๋‚˜๋จธ์ง€๋Š” ์•ž์œผ๋กœ ํ•  ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ์ฐจ์ฐจ ์ดํ•ดํ•ด๋„ ๊ดœ์ฐฎ๋‹ค.
(์ธ์ฆ/์ธ๊ฐ€, ํ”„๋ก ํŠธ์—”๋“œ/๋ฐฑ์—”๋“œ ๋กœ๊ทธ์ธ ์‹ค์Šต, RESTFUL API)

  1. HTTP ๋Š” ์ปดํ“จํ„ฐ ๋ผ๋ฆฌ์˜ ์†Œํ†ต์„ ์œ„ํ•œ ํ†ต์‹ ๊ทœ์•ฝ์ด๋‹ค.
  2. HTTP ํ†ต์‹ ์€ Request(์š”์ฒญ)๊ณผ Response(์‘๋‹ต)์œผ๋กœ ์ด๋ฃจ์–ด ์ง„๋‹ค.
  3. HTTP ํ†ต์‹ ์˜ ๋งค ์š”์ฒญ๊ณผ ์‘๋‹ต์€ ์ด์ „ ์ƒํƒœ๋ฅผ ์•Œ์ง€ ๋ชป ํ•œ๋‹ค. (Stateless)
profile
Backend Developer

0๊ฐœ์˜ ๋Œ“๊ธ€