[TIL] Day32 #REST API

Beanxxยท2022๋…„ 6์›” 10์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
32/120
post-thumbnail

[TIL] Day32
[SEB FE] Day32

โ˜‘๏ธย REST API

Representational State Transfer

์›น์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ/์ž์›(Resource)์„ HTTP URI๋กœ ํ‘œํ˜„ํ•˜๊ณ ,
HTTP ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ์ •์˜ํ•˜๋Š” ๋ฐฉ์‹

๐Ÿ“Žย Richardson์˜ REST ์„ฑ์ˆ™๋„ ๋ชจ๋ธ (RMM)

LevelDescription
0๋‹จ๊ณ„HTTP ํ”„๋กœํ† ์ฝœ ์‚ฌ์šฉ
1๋‹จ๊ณ„๊ฐœ๋ณ„ ๋ฆฌ์†Œ์Šค์™€์˜ ํ†ต์‹  ์ค€์ˆ˜
2๋‹จ๊ณ„HTTP ๋ฉ”์†Œ๋“œ ์›์น™ ์ค€์ˆ˜โ†’ HTTP API
3๋‹จ๊ณ„HATEOAS ์›์น™ ์ค€์ˆ˜โ†’ REST API

0๏ธโƒฃย ๋‹จ๊ณ„

HTTP ํ”„๋กœํ† ์ฝœ ์‚ฌ์šฉ โ† REST API ์ž‘์„ฑ ๊ธฐ๋ณธ ๋‹จ๊ณ„

โœ‹ย 0๋‹จ๊ณ„์˜ ๊ฒฝ์šฐ, ํ•ด๋‹น API๋ฅผ REST API๋ผ๊ณ  ํ•  ์ˆœ โŒ


1๏ธโƒฃย ๋‹จ๊ณ„

๊ฐœ๋ณ„ Resource์™€์˜ ํ†ต์‹  ์ค€์ˆ˜

๐Ÿ‘‰ ๋ชจ๋“  ์ž์›์€ ๊ฐœ๋ณ„ ๋ฆฌ์†Œ์Šค์— ๋งž๋Š” ์—”๋“œํฌ์ธํŠธ(Endpoint) ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋ฉฐ, ์š”์ฒญํ•˜๊ณ  ๋ฐ›๋Š” ์ž์› ์ •๋ณด๋ฅผ ์‘๋‹ต์œผ๋กœ ์ „๋‹ฌํ•ด์•ผ ํ•จ
โž• ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ์— ๋Œ€ํ•œ ์„ฑ๊ณต/์‹คํŒจ ์—ฌ๋ถ€ ํ•จ๊ป˜ ๋ฐ˜ํ™˜

โœ‹ย Endpoint ์ž‘์„ฑ์‹œ ๋ฆฌ์†Œ์Šค์— ์ดˆ์ ์„ ๋‘์–ด ๋ช…์‚ฌ ํ˜•ํƒœ ๋‹จ์–ด๋กœ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์ง
(๋™์‚ฌ, ํ–‰์œ„ ๋‹จ์–ด ์‚ฌ์šฉ ์ง€์–‘)


2๏ธโƒฃย ๋‹จ๊ณ„

CRUD์— ๋งž๊ฒŒ ์ ์ ˆํ•œ HTTP ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์— ์ค‘์ 

๐Ÿซถ HTTP ๋ฉ”์„œ๋“œ ์‚ฌ์šฉ ๊ทœ์น™ ์œ ์˜ ์‚ฌํ•ญ

MethodRule
GET์„œ๋ฒ„ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€ํ™”์‹œํ‚ค์ง€ ์•Š๋Š” ์š”์ฒญ์— ์‚ฌ์šฉ
POST์š”์ฒญ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ๋ฆฌ์†Œ์Šค ์ƒ์„ฑ (๋ฉฑ๋“ฑ์„ฑโŒ)
PUT์š”์ฒญ๋งˆ๋‹ค ๊ฐ™์€ ๋ฆฌ์†Œ์Šค ๋ฐ˜ํ™˜ (๋ฉฑ๋“ฑ์„ฑโญ•๏ธ)
๊ต์ฒด ์šฉ๋„๋กœ ์‚ฌ์šฉ
โœ‹ย ๋งค ์š”์ฒญ๋งˆ๋‹ค ๊ฐ™์€ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํŠน์ง• โ‡’ ๋ฉฑ๋“ฑ(idempotent)ํ•˜๋‹ค
PATCH์ˆ˜์ • ์šฉ๋„๋กœ ์‚ฌ์šฉ
โœ‹ย PUT๊ณผ ๋น„์Šทํ•˜๋‚˜ ๊ตฌ๋ถ„ํ•˜์—ฌ ์‚ฌ์šฉํ•ด์•ผ ํ•จ

3๏ธโƒฃย ๋‹จ๊ณ„

HATEOAS(Hypertext As Engine Of Application State) ํ•˜์ดํผ๋ฏธ๋””์–ด ์ปจํŠธ๋กค ์ ์šฉ
โœ‹ย ์š”์ฒญ์€ 2๋‹จ๊ณ„์™€ ๋™์ผํ•˜์ง€๋งŒ, ์‘๋‹ต์—” ๋ฆฌ์†Œ์Šค URI๋ฅผ ํฌํ•จํ•œ ๋งํฌ ์š”์†Œ ์‚ฝ์ž…ํ•˜์—ฌ ์ž‘์„ฑํ•ด์•ผ ํ•จ


๐Ÿ“Žย Open API

๋ˆ„๊ตฌ์—๊ฒŒ๋‚˜ ์—ด๋ ค์žˆ๋Š” API
โœ‹ย But, ๋ฌด์ œํ•œ์œผ๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์˜๋ฏธ โŒย (์ •ํ•ด์ง„ ์ด์šฉ ์ˆ˜์น™, ์ œํ•œ์‚ฌํ•ญ์ด ์กด์žฌํ•  ์ˆ˜๋„ ์žˆ์Œ)


๐Ÿ“Žย API Key

์„œ๋ฒ„์˜ ๋ฌธ์„ ์—ฌ๋Š” Key๋กœ์จ, API๋ฅผ ์ด์šฉํ•˜๋ ค๋ฉด API Key ํ•„์š”

โžฐย ๋กœ๊ทธ์ธํ•œ User์—๊ฒŒ ์ž์›์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ API Key ํ˜•ํƒœ๋กœ ์ œ๊ณต
โžฐย ๋ฐ์ดํ„ฐ ์š”์ฒญ์‹œ API Key๋ฅผ ๊ฐ™์ด ์ „๋‹ฌํ•ด์•ผ ์›ํ•˜๋Š” ์‘๋‹ต์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ



โœ๏ธ
์˜ค๋Š˜์€ ๊ทธ๋ž˜๋„ ์‹œ๊ฐ„์ด ์—ฌ์œ ๋กœ์šด ๋‚  ๐Ÿซถ
์ €๋…์— ์ฒจ๋ถ€ํ„ฐ ๋ณต์Šต ์ข€ ํ•˜๊ณ , ๊ฐœ๋ฐœ ๋„์„œ๋„ ์ฝ๊ณ  ์ •๋ฆฌํ•˜๊ธฐ ๐Ÿ’ช

profile
FE developer

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