HTTP

camilleยท2022๋…„ 5์›” 22์ผ
0
post-thumbnail

๐Ÿ“• 1. ํ†ต์‹ ๊ณผ HTTP

: HTTP๋Š” Hyper Text Transfer Protocol์˜ ๋‘๋ฌธ์ž์–ด๋กœ, ์ธํ„ฐ๋„ท์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ํ”„๋กœํ† ์ฝœ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

HT (hyper text)
:๋ฌธ์„œ์™€ ๋ฌธ์„œ๊ฐ€ ๋งํฌ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์Œ์„ ๋œปํ•œ๋‹ค.

T (transfer)
:HTML๋กœ ๋งŒ๋“  ์›นํŽ˜์ด์ง€ ๋ฌธ์„œ๋ฅผ ๋ณด๋‚ธ๋‹ค.

P (protocol)
: ์ปดํ“จํ„ฐ๋ผ๋ฆฌ ์–ด๋–ป๊ฒŒ HTMLํŒŒ์ผ์„ ์ฃผ๊ณ  ๋ฐ›์„ ์ง€์— ๋Œ€ํ•œ ์†Œํ†ต ๋ฐฉ์‹ ๋˜๋Š” ์•ฝ์†

๐Ÿ“• 2. Request / Response (์‘๋‹ต / ์š”์ฒญ)

์†Œํ†ต์˜ ํ•ต์‹ฌ์€ ์š”์ฒญ๊ณผ ์‘๋‹ต์ด๋‹ค. ์ธ๊ฐ„์˜ ์†Œํ†ต๋ฐฉ์‹์ด ์ปดํ“จํ„ฐ ๋ผ๋ฆฌ ์†Œํ†ต๋ฐฉ์‹์—๋„ ์ ์šฉ๋œ ๊ฒƒ์ด๋‹ค. ๋ง์ด ์•„๋‹Œ ๋ฉ”์„ธ์ง€์˜ ํ˜•์‹์œผ๋กœ ์š”์ฒญํ•˜๊ณ  ์‘๋‹ตํ•œ๋‹ค.

๐Ÿ“• 3. Stateless

HTTP๊ฐœ๋ณ„ ํ†ต์‹ ์€ ๋ชจ๋‘ ๋…๋ฆฝ์ด์–ด์„œ, ๊ณผ๊ฑฐ์˜ HTTP ํ†ต์‹ ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์กดํ•˜์ง€ ์•Š๋Š”๋‹ค.

Stateless์— ๋Œ€ํ•œ ์ •๋ณด๋Š” ์—ฌ๊ธฐ์„œ ์ž์„ธํžˆ ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ๋‹ค.

Stateless ๋ฐฉ๋ฒ•์œผ๋กœ ์ด์šฉ์„ ํ•˜๋Š”๊ฐ€?

๋…๋ฆฝ์ ์œผ๋กœ ์•ˆํ•˜๋ฉด ๊ณผ๋ถ€ํ•˜๊ฐ€ ์ผ์–ด๋‚  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฃผ๋ฌธ์„ ๋ฐ›๋Š” ์ ์›์ด ๋งค๋ฒˆ ๋‹ฌ๋ผ์„œ ์‘๋Œ€ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ๋…๋ฆฝ์ ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์„œ๋ฒ„์˜ ๊ณผ๋ถ€ํ™”๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๊ทธ๊ฒŒ ์ข€ ๋” ํšจ์œจ์ ์ด๋‹ค.

๋งค ํ†ต์‹  ๋งˆ๋‹ค ์‚ฌ์ „์— ํ•„์š”ํ•œ ๋ชจ๋“  ์ •๋ณด๋ฅผ ๋‹ด์•„์„œ ์š”์ฒญ์„ ๋ณด๋‚ด์•ผ๋งŒ ํ•˜๋Š”๋ฐ, ์ด๋Ÿด ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํ† ํฐ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ“– ๋ฉ”์‹œ์ง€ ๊ตฌ์กฐ

๐Ÿ“Œ Status Line
HTTP version : HTTP ๋ฒ„์ „
Status Code : ์‘๋‹ต ์ƒํƒœ ์ฝ”๋“œ
Status Text : ์‘๋‹ต์˜ ์ƒํƒœ๋ฅผ ๊ฐ„๋žตํžˆ ์„ค๋ช…ํ•˜๋Š” ํ…์ŠคํŠธ
(HTTP/1.1 404 Not Found, HTTP/1.1 200 SUCCESS)

๐Ÿ“Œ Header
: ์š”์ฒญ์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ๋ถ€๋ถ„
{key : value}์˜ ํ˜•ํƒœ
Headers:{
Host : www.camille.co.kr
User-Agent : chrome
Content-Type : application/json
Content-Length : 50
}

๐Ÿ“Œ Body
: ์š”์ฒญ์˜ ์‹ค์ œ ๋‚ด์šฉ
Body : {
"username" : "camille",
"password" : "camille0509"
}
์š”์ฒญ ๋ฉ”์†Œ๋“œ์— ๋”ฐ๋ผ ์กด์žฌํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Œ

๐Ÿ“˜ HTTP request methods

- GET : ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ค๊ธฐ๋งŒ ํ•  ๋•Œ ์‚ฌ์šฉ, ์›นํŽ˜์ด์ง€์— ์ ‘์†ํ•ด์„œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ๋•Œ ์‚ฌ์šฉ
- POST : ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑ/ ์ˆ˜์ •ํ•  ๋•Œ ์‚ฌ์šฉ body์— ๋‹ด๋Š” ๋‚ด์šฉ์ด ํ•ต์‹ฌ
- DELETE ์„œ๋ฒ„์— ์ €์žฅ๋œ ํŠน์ •๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œ 

โœ” GET Method

โœ” POST Method

โœ” DELETE Method

๐Ÿ“– ๋Œ€ํ‘œ์ ์ธ ์˜ค๋ฅ˜

Success
200 : OK (status code ๋ฌธ์ œ๊ฐ€ ์—†๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๊ฐ€ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„์— ์ด๋ฃจ์–ด์ง€๊ณ  ๋‚˜์„œ ๋‚˜ํƒ€๋‚˜๋Š” ์ฝ”๋“œ)
201 : Created (๋ฌด์–ธ๊ฐ€๊ฐ€ ์ž˜ ์ƒ์„ฑ ๋˜์—ˆ์„ ๋•Œ์—(Successfully Created) ์˜ค๋Š” status code๋กœ ๋Œ€๊ฒŒ POST ๋ฉ”์†Œ๋“œ ์š”์ฒญ์— ๋”ฐ๋ผ ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๊ฐ€ ์ž˜ ์ƒ์„ฑ๋˜๊ณ  ์ˆ˜์ • ๋˜์—ˆ์„ ๋•Œ ๋ณด๋‚ด๋Š” ์ฝ”๋“œ)
204 : No Content(์š”์ฒญ์ด ์„ฑ๊ณต ํ–ˆ์œผ๋ฉฐ ์‘๋‹ต ๋ฉ”์„ธ์ง€๊ฐ€ ์—†์„ ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•˜๋Š” status code ์ฃผ๋กœ DELETE ๋ฉ”์†Œ๋“œ์˜ ์š”์ฒญ์œผ๋กœ ์„ฑ๊ณต์ ์œผ๋กœ ์‚ญ์ œ๋˜์–ด์„œ ์‘๋‹ต์œผ๋กœ ์ œ๊ณตํ•  ์ปจํ…์ธ ๊ฐ€ ์—†์„ ๋•Œ ์‚ฌ์šฉ)

Error
400 : Bad Request(Bad Request ํ•ด๋‹น์š”์ฒญ์ด ์ž˜๋ชป๋˜์—ˆ์„ ๋•Œ ๋ณด๋‚ด๋Š” status code ์ฃผ๋กœ ์š”์ฒญ์˜ body์— ๋ณด๋‚ด๋Š” ๋‚ด์šฉ์ด ์ž˜๋ชป๋˜์—ˆ์„ ๋•Œ์‚ฌ์šฉ)
401 : Unauthorized (์œ ์ €๊ฐ€ ์š”์ฒญ์„ ์ง„ํ–‰ํ•˜๋ ค๋ฉด ๋กœ๊ทธ์ธ ๋˜๋Š” ํšŒ์›๊ฐ€์ž…์ด ํ•„์š”ํ•˜๋‹ค๋Š”์˜๋ฏธ)
403 : Forbidden(์œ ์ €๊ฐ€ ํ•ด๋‹น ์š”์ฒญ์— ๋Œ€ํ•œ ๊ถŒํ•œ์ด ์—†๋‹ค๋Š” ์˜๋ฏธ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” status code ์ ‘๊ทผ ๋ถˆ๊ฐ€๋Šฅํ•œ ์ •๋ณด์— ์ ‘๊ทผํ–ˆ์„ ๊ฒฝ์šฐ๋ฅผ ์˜๋ฏธ)
404 : Not Found(์ž˜๋ชป๋œ ์š”์ฒญ)

Server Error
505 : Internal Server Error
(์„œ๋ฒ„์—์„œ ์—๋Ÿฌ๊ฐ€ ์˜ฌ ๋•Œ์˜ status code ๋ณดํ†ต์€ ๋ฐฑ์—”๋“œ์—์„œ ์‹œ์ธํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์œผ๋ฉฐ, ์ด๊ฑด ๋‹จ์ง€ ํ‘œ์ค€์ผ ๋ฟ์ด์ง€ ์ž๋™์œผ๋กœ ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ท€์ฐฎ๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์„œ ํ•  ์ˆ˜ ๋„ ์žˆ์ง€๋งŒ, ๋ญ๋“  404๋กœ ์ค˜๋ฒ„๋ฆฌ๋ฉด ๋ญ๊ฐ€ ์ž˜๋ชป๋˜์—ˆ๋Š”์ง€ ์•Œ ์ˆ˜๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ํ‘œ์ค€์„ ์ž˜ ์ง€์ผœ์„œ ๊ฐœ๋ฐœ์„ ํ•˜๋Š” ๊ฒƒ์ด ํ•„์š”ํ•จ)

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