๐Ÿ”ฌComputer Science/๋„คํŠธ์›Œํฌ

[TIL] HTTP ๋ฉ”์„œ๋“œ ์ข…๋ฅ˜์™€ ์†์„ฑ

hellohailie 2023. 1. 7. 00:33

 

๐Ÿค“๋ฐฐ์›€ ์š”์•ฝํ•˜๊ธฐ

๋ฉฑ๋“ฑ์„ฑ์ด๋ž€?
ํ•œ ๋ฒˆ ํ˜ธ์ถœํ•˜๋“  ๋‘ ๋ฒˆ ํ˜ธ์ถœํ•˜๋“  100๋ฒˆ ํ˜ธ์ถœํ•˜๋“  ๊ฒฐ๊ณผ๊ฐ€ ๋˜‘๊ฐ™์€ ๊ฒƒ์„ ๋งํ•˜๋Š”๋ฐ HTTP ๋ฉ”์„œ๋“œ์—์„œ๋Š” GET, PUT, DELETE๊ฐ€ ๋ฉฑ๋“ฑํ•ฉ๋‹ˆ๋‹ค. 

 

 

โœ”๏ธ API URI ์„ค๊ณ„์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ๋ฆฌ์†Œ์Šค ์‹๋ณ„์ด๋‹ค!

 

URI๋Š” ๋ฆฌ์†Œ์Šค๋งŒ ์‹๋ณ„ํ•œ๋‹ค. 

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

- ๋ฆฌ์†Œ์Šค: ํšŒ์›

- ํ–‰์œ„: ์กฐํšŒ, ๋“ฑ๋ก, ์‚ญ์ œ, ๋ณ€๊ฒฝ

๋ฆฌ์†Œ์Šค๋Š” ๋ช…์‚ฌ, ํ–‰์œ„๋Š” ๋™์‚ฌ 

 


โœ”๏ธHTTP ๋ฉ”์„œ๋“œ ์ข…๋ฅ˜

 

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

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

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

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

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

OPTIONS : ๋Œ€์ƒ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ํ†ต์‹  ๊ฐ€๋Šฅ ์˜ต์…˜(๋ฉ”์„œ๋“œ)์„ ์„ค๋ช… (์ฃผ๋กœ CORS์—์„œ ์‚ฌ์šฉ)


โ– GET

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

- ์„œ๋ฒ„์— ์ „๋‹ฌํ•˜๊ณ  ์‹ถ์€ ๋ฐ์ดํ„ฐ๋Š” query(์ฟผ๋ฆฌ ํŒŒ๋ผ๋ฏธํ„ฐ, ์ฟผ๋ฆฌ ์ŠคํŠธ๋ง)์„ ํ†ตํ•ด์„œ ์ „๋‹ฌ

- ๋ฉ”์‹œ์ง€ ๋ฐ”๋””๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๊ณณ์ด ๋งŽ์•„์„œ ๊ถŒ์žฅํ•˜์ง€ ์•Š์Œ

 

โ– POST

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

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

- ์„œ๋ฒ„๋Š” ์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค. (๋ฉ”์„ธ์ง€ ๋ฐ”๋””๋ฅผ ํ†ตํ•ด ๋“ค์–ด์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. )

- ์ฃผ๋กœ ์ „๋‹ฌ๋œ ๋ฐ์ดํ„ฐ๋กœ ์‹ ๊ทœ ๋ฆฌ์†Œ์Šค ๋“ฑ๋ก, ํ”„๋กœ์„ธ์Šค ์ฒ˜๋ฆฌ์— ์‚ฌ์šฉํ•œ๋‹ค. 

 

***

1. ์ƒˆ ๋ฆฌ์†Œ์Šค ์ƒ์„ฑ(๋“ฑ๋ก)

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

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

***

 

โ– PUT

๋ฆฌ์†Œ์Šค๊ฐ€ ์žˆ์œผ๋ฉด ์™„์ „ํžˆ ๋Œ€์ฒด, ๋ฆฌ์†Œ์Šค๊ฐ€ ์—†์œผ๋ฉด ์ƒ์„ฑํ•œ๋‹ค. (์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด ๋ฎ์–ด๋ฒ„๋ฆฐ๋‹ค. )

โ—๏ธํด๋ผ์–ธํŠธ๊ฐ€ ๋ฆฌ์†Œ์Šค๋ฅผ ์‹๋ณ„ํ•œ๋‹ค. (ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฆฌ์†Œ์Šค ์œ„์น˜๋ฅผ ์•Œ๊ณ  URI๋ฅผ ์ง€์ •ํ•œ๋‹ค. )

 

โ– PATCH

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

 

โ– DELETE

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

 


โœ”๏ธ HTTP ๋ฉ”์„œ๋“œ์˜ ์†์„ฑ

1. ์•ˆ์ „ (Safe Methods)

- ํ˜ธ์ถœํ•ด๋„ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋Š”๋‹ค.

โ–ถGET๋งŒ ์•ˆ์ „ํ•จ

 

 

 

2. ๋ฉฑ๋“ฑ (Idempotent Methods)

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

โ–ถGET: ํ•œ๋ฒˆ ์กฐํšŒํ•˜๋“ , ๋‘ ๋ฒˆ ์กฐํšŒํ•˜๋“  ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ์กฐํšŒ๋œ๋‹ค. 

โ–ถPUT : ๊ฐ™์€ ์š”์ฒญ์„ ์—ฌ๋Ÿฌ๋ฒˆ ํ•ด๋„ ์ตœ์ข… ๊ฒฐ๊ณผ๋Š” ๊ฐ™๋‹ค. 

โ–ถDELETE : ๊ฐ™์€ ์š”์ฒญ์„ ์—ฌ๋Ÿฌ๋ฒˆ ํ•ด๋„ ์‚ญ์ œ๋œ ๊ฒฐ๊ณผ๋Š” ๊ฐ™๋‹ค. 

(POST๋Š” ๋ฉฑ๋“ฑ ์•„๋‹˜!! ์ค‘๋ณต ๋ฐœ์ƒํ•˜๋‹ˆ๊นŒ!)

 

๋ฉฑ๋“ฑ์„ ํ™œ์šฉํ•˜๋Š” ์˜ˆ์‹œ

=> ์ž๋™ ๋ณต๊ตฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜!

์„œ๋ฒ„๊ฐ€ ์ •์ƒ ์‘๋‹ต์„ ๋ชป์ฃผ์—ˆ์„ ๋•Œ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ฐ™์€ ์š”์ฒญ์„ ๋‹ค์‹œ ํ•ด๋„ ๋˜๋Š”๊ฐ€์— ๋Œ€ํ•œ ํŒ๋‹จ ๊ทผ๊ฑฐ๋กœ ์“ธ ์ˆ˜ ์žˆ๋‹ค. 

 

 

3. ์บ์‹œ๊ฐ€๋Šฅ (Cacheable Methods)

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

GET, HEAD, POST, PATCH ์บ์‹œ ๊ฐ€๋Šฅ

์‹ค์ œ๋กœ๋Š” GET, HEAD ์ •๋„๋งŒ ์บ์‹œ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. (POST, PATCH๋Š” ๊ตฌํ˜„์ด ์‰ฝ์ง€ ์•Š์Œ)

 

 


๐Ÿ˜ƒ ์ž˜๋ชป๋œ ๊ฐœ๋… ์ „๋‹ฌ์ด ์žˆ๋‹ค๋ฉด ๋Œ“๊ธ€ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ €์˜ ์„ฑ์žฅ์— ํฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค๐Ÿค“