

REST(Representational State Transfer)λ Webμ κ°λ°νλλ° μ§μΉ¨μ μ 곡νκ³ κ·Έ ꡬ쑰λ₯Ό μ€λͺ νκΈ° μν΄ λ§λ€μ΄μ§ μννΈμ¨μ΄ μν€ν μ² μ€νμΌμ΄λ€.
Restful APIμ ν΅μ¬μ URLμ Endpointλ‘ λ°λΌλ³΄λ κ²μ΄ μλλΌ νλμ μμμΌλ‘ λ°λΌλ³΄λ κ²μ΄κ³ , μΌκ΄μ±μ κ°μ Έμ μμΈ‘ κ°λ₯νκ² λλ κ²μ΄λ€. μλλ Rest μν€ν μ²μμ κ°μ§λ νΉμ±μ΄λΌκ³ νλ€.
ν΄λΌμ΄μΈνΈ-μλ² μμ²μμ ν΄λΌμ΄μΈνΈ μ λ³΄κ° μ μ₯λμ§ μκ³ , κ° μμ²μ λΆλ¦¬λμ΄μΌ νλ€.
ν΄λΌμ΄μΈνΈ, μλ², 리μμ€λ‘ ꡬμ±λμ΄ μμΌλ©° HTTPλ‘ μμ²μ΄ μ΄λ£¨μ΄μ§λ€.
μΊμ±μ΄ κ°λ₯νλλ‘ νμ¬ ν΄λΌμ΄μΈνΈ-μλ²κ° μνΈμμ©μ μ΅μννλ€.
리μμ€ μλ³μ΄ κ°λ₯ν΄μΌ νλ©°, ν΄λΌμ΄μΈνΈμ μ μ‘λ ννκ³Ό ꡬλΆλμ΄μΌνλ€.
κ·Έλ¦¬κ³ μμ νλ ννμ ν΅ν΄ 리μμ€κ° μ‘°μλμ΄μΌ νλ€.
ν΄λΌμ΄μΈνΈλ μκΈ° μμ μ λ©μμ§μ μ 보λ₯Ό μ΄λ»κ² μ²λ¦¬ν΄μΌ ν μ§ μ€λͺ
νλ μ λ³΄κ° μΆ©λΆν ν¬ν¨λμ΄μΌ νλ€.(Content-type, method, encoding λ±)
μλ²λ κ³μΈ΅ ꡬ쑰(보μ, λ‘λλ°Έλ°μ± λ±)λ‘ κ΅¬μ±νλ κ³μΈ΅νλ μμ€ν μ κ°μ§ μ μλ€.
μμ²μ λ°μΌλ©΄ μλ²μμ ν΄λΌμ΄μΈνΈλ‘ μ€ν κ°λ₯ν μ½λλ₯Ό μ μ‘νμ¬ ν΄λΌμ΄μΈνΈ κΈ°λ₯μ νμ₯ν μ μλ€.
Restful APIμμλ μμμ λν νμλ₯Ό HTTP λ©μλλ₯Ό ν΅ν΄ λνλ΄μ΄ μλ²μμ μ΄ λ©μλμ λ°λΌ μ²λ¦¬νκ³ , Responseλ‘ μν μ½λλ₯Ό μ λ¬ν΄ μλ΅μ μνλ₯Ό νννλ€.
λ©μλ | μ€λͺ | μ£Όλ μ©λ | λ©±λ±μ± (Idempotent) | μμ μ± (Safe) | μμ URI |
|---|---|---|---|---|---|
GET | 리μμ€λ₯Ό μ‘°ν | λ°μ΄ν° μ‘°ν | β μ (κ°μ μμ² μ¬λ¬ λ² ν΄λ κ²°κ³Ό λμΌ) | β μ (μλ² μν λ³κ²½ μμ) | /users/1 |
POST | 리μμ€λ₯Ό μμ± | λ°μ΄ν° μΆκ° | β μλμ€ | β μλμ€ | /users |
PUT | 리μμ€λ₯Ό μ 체 μμ | λ°μ΄ν° μ 체 μ λ°μ΄νΈ | β μ | β μλμ€ | /users/1 |
PATCH | 리μμ€λ₯Ό μΌλΆ μμ | λ°μ΄ν° μΌλΆ μ λ°μ΄νΈ | β μΌλ°μ μΌλ‘ μλμ€ (μλ² κ΅¬νμ λ°λΌ λ€λ¦) | β μλμ€ | /users/1 |
DELETE | 리μμ€λ₯Ό μμ | λ°μ΄ν° μμ | β μ (μ΄λ―Έ μμ λ κ²½μ°μλ λμΌν μλ΅ κ°λ₯) | β μλμ€ | /users/1 |
OPTIONS | μ§μνλ λ©μλ μ‘°ν | CORS μ¬μ μμ² λ± | β μ | β μ | /users |
HEAD | 리μμ€μ ν€λλ§ μ‘°ν (λ³Έλ¬Έ μμ) | λ©νλ°μ΄ν° νμΈ | β μ | β μ | /users/1 |
μν | μν μ½λ | μλ―Έ | μ€λͺ | μ¬μ© μμ |
|---|---|---|---|---|
(2xx) | 200 OK | μμ² μ±κ³΅ | GET, PUT, PATCH, DELETE λ±μ μ¬μ© | λ°μ΄ν° μ‘°ν μ±κ³΅ |
201 Created | μμ±λ¨ | POST μμ²μΌλ‘ 리μμ€ μμ± μ μ¬μ© | νμκ°μ , κΈ μμ± λ± | |
204 No Content | λ΄μ© μμ | μ±κ³΅νμ§λ§ μλ΅ λ³Έλ¬Έμ΄ μμ λ | DELETE, PUT μ±κ³΅ ν μλ΅ μμ | |
(3xx) | 301 Moved Permanently | μꡬ μ΄λ | 리μμ€κ° μꡬμ μΌλ‘ μ΄λ | URL λ³κ²½ μλ΄ |
302 Found | μμ μ΄λ | 리μμ€κ° μμλ‘ λ€λ₯Έ μμΉμ μμ | λ‘κ·ΈμΈ ν 리λλ μ | |
304 Not Modified | λ³κ²½ μμ | μΊμλ 리μμ€λ₯Ό κ·Έλλ‘ μ¬μ© κ°λ₯ | μ‘°κ±΄λΆ GET (If-Modified-Since λ±) | |
(4xx) | 400 Bad Request | μλͺ»λ μμ² | μ ν¨νμ§ μμ νλΌλ―Έν° λ± | νλ λλ½, JSON νμ± μ€ν¨ |
401 Unauthorized | μΈμ¦ νμ | λ‘κ·ΈμΈ νμ λλ ν ν° μ€λ₯ | JWT μμ/λ§λ£ | |
403 Forbidden | μ κ·Ό κΈμ§ | κΆνμ΄ μλ κ²½μ° | κ΄λ¦¬μ μ μ© μ κ·Ό | |
404 Not Found | 리μμ€ μμ | μ‘΄μ¬νμ§ μλ URI μμ² | μλͺ»λ IDλ‘ μ‘°ν μ | |
409 Conflict | μΆ©λ | μ€λ³΅ 리μμ€ μμ± μ λ± | λμΌ ID μ€λ³΅ μμ± λ± | |
422 Unprocessable Entity | μ²λ¦¬ν μ μμ | νμμ λ§μ§λ§ μλ―Έκ° μλͺ»λ¨ | νΌ κ²μ¦ μ€ν¨ λ± | |
(5xx) | 500 Internal Server Error | λ΄λΆ μλ² μ€λ₯ | μλ² λ΄λΆ μμΈ λ°μ | μμμΉ λͺ»ν μλ¬ |
502 Bad Gateway | κ²μ΄νΈμ¨μ΄ μ€λ₯ | μλ²κ° μλͺ»λ μλ΅ μμ | νλ‘μ, κ²μ΄νΈμ¨μ΄ λ¬Έμ | |
503 Service Unavailable | μλΉμ€ λΆκ° | μλ² μ κ² μ€ λλ κ³ΌλΆν | μλ² λ€μ΄, μ μ§λ³΄μ | |
504 Gateway Timeout | κ²μ΄νΈμ¨μ΄ νμμμ | μλ΅ μ§μ° | λ°±μλ μλ΅ μ§μ° μ |
리차λμ¨(Richardson)μ Rest APIλ₯Ό μ μ μ©νκΈ° μν΄ 4λ¨κ³μ μ±μλ λͺ¨λΈμ μ μνλ€.
