REST API
REST μν€ν μ² μ€νμΌμ μ€κ³ μμΉμ λ€λ₯΄λ APIμ΄λ€. RESTλ Representational Sate Transferλ‘ HTTP URIλ₯Ό ν΅ν΄ μμμ λͺ μνκ³ HTTP Method(POST, GET, PUT, DELETE)λ₯Ό ν΅ν΄ ν΄λΉ μμμ λν CRUD μμ (Create, Read, Update, Delete)μ μννλ κ²μ λ§νλ€.
1) μμ-URI
: λͺ¨λ μμμ κ³ μ ν URIλ₯Ό κ°μ§λ€. μλ₯Ό λ€μ΄, /usersλ μ¬μ©μ λͺ©λ‘μ λν μμμ μλ―Ένλ©°, /users/{id}λ νΉμ μ¬μ©μλ₯Ό μλ³νλ€.
2) νμ-HTTP λ©μλ
- GET: μμ μ‘°ν
- POST: μμ μμ±
- PUT: μμ μ 체 μ λ°μ΄νΈ
- PATCH: μμμ λΆλΆ μ λ°μ΄νΈ
- DELETE: μμ μμ
3) νν
: Clientκ° μμμ μνμ λν μ‘°μμ μμ²νλ©΄ Serverλ μ΄μ λν μ μ ν μλ΅μ 보λΈλ€.
λ±μ₯ λ°°κ²½
μΉμ΄ λΉ λ₯΄κ² νμ°λλ©΄μ λ€μν μ ν리μΌμ΄μ μ΄ HTTPλ₯Ό ν΅ν΄ λ°μ΄ν°λ₯Ό μ£Όκ³ λ°κΈ° μμνκ³ , HTTPλ Client-Server λͺ¨λΈμ κΈ°λ°μΌλ‘ λ€μν μ’ λ₯μ μμλ€μ URIλ₯Ό ν΅ν΄ μ μν μ μμκ³ , RESTλ μ΄λ₯Ό λ³΄λ€ μΌκ΄μ± μκ² νμ©νλ λ°©μμΌλ‘ λ±μ₯νλ€. RESTλ HTTPλ₯Ό νμ©νμ¬ CRUD μμ μ λ¨μννκ³ , μμμ URIλ‘ ν΅ν©ν΄ κ΄λ¦¬ν μ μλλ‘ νλ€. μ¦, νλμ λΈλΌμ°μ λΏλ§ μλλΌ μΉ, μμ΄ν°, μλλ‘μ΄λ μ ν리μΌμ΄μ λ±κ³Όμ ν΅μ μ λ²μ©μ μΌλ‘ λμνκΈ° μν΄μ λ±μνμλ€.
νΉμ§
- 무μνμ± (Stateless)
μλ²λ ν΄λΌμ΄μΈνΈμ μνλ₯Ό μ μ₯νμ§ μμΌλ©°, κ° μμ²μ λ 립μ μΌλ‘ μ²λ¦¬λ©λλ€. λ°λΌμ λͺ¨λ μμ²μ νμν μ 보λ μμ²μ ν¬ν¨λμ΄μΌ ν©λλ€. - μΊμ κ°λ₯μ± (Cacheable)
RESTful APIλ μΉ νμ€μΈ HTTPλ₯Ό μ¬μ©νκΈ° λλ¬Έμ, ν΄λΌμ΄μΈνΈλ μλ²λ‘λΆν° λ°μ μλ΅μ μΊμν μ μμ΅λλ€. μ΄λ‘ μΈν΄ λΆνμν μμ²μ μ€μ΄κ³ μ±λ₯μ ν₯μμν¬ μ μμ΅λλ€. - μΌκ΄λ μΈν°νμ΄μ€ (Uniform Interface)
RESTful APIλ νΉμ URIμ HTTP λ©μλλ₯Ό μ¬μ©ν΄ μμμ μ κ·Όνλ νμ€νλ μΈν°νμ΄μ€λ₯Ό μ 곡νλ―λ‘, REST μμΉμ λ°λ₯΄λ ν νΉμ APIκ° λ€λ₯Έ APIμλ μΌκ΄λ λ°©μμΌλ‘ μλν©λλ€. - κ³μΈ΅νλ μμ€ν
(Layered System)
ν΄λΌμ΄μΈνΈλ μ€κ° μλ²λ₯Ό κ±°μ³ μμ²μ μ²λ¦¬ν μ μμΌλ©°, κ° μλ²λ κ³μΈ΅μ μΌλ‘ λ°°μΉλμ΄ λ 립μ μΌλ‘ μλν©λλ€.
μ€μ¬ κ·μΉ
RESTμμ κ°μ₯ μ€μνλ©° κΈ°λ³Έμ μΈ κ·μΉμ μλ λ κ°μ§λ€.
- URIλ μ 보μ μμμ ννν΄μΌ νλ€.
- μμμ λν νμλ HTTP Method (GET, POST, PUT, DELETE λ±)μΌλ‘ νννλ€.
μΈλΆ κ·μΉ
1. μ¬λμ ꡬλΆμ ( / )λ κ³μΈ΅ κ΄κ³λ₯Ό λνλ΄λλ° μ¬μ©νλ€.
2. URI λ§μ§λ§ λ¬Έμλ‘ μ¬λμ ( / )λ₯Ό ν¬ν¨νμ§ μλλ€.
μ¦ URIμ ν¬ν¨λλ λͺ¨λ κΈμλ 리μμ€μ μ μΌν μλ³μλ‘ μ¬μ©λμ΄μΌ νλ©° URIκ° λ€λ₯΄λ€λ κ²μ 리μμ€κ° λ€λ₯΄λ€λ κ²
μμΌλ‘ 리μμ€κ° λ€λ₯΄λ©΄ URIλ λ¬λΌμ ΈμΌ νλ€.
3. νμ΄ν ( - )μ URI κ°λ
μ±μ λμ΄λλ° μ¬μ©νλ€.
4. λ°μ€ ( _ )μ URIμ μ¬μ©νμ§ μλλ€.
5. URI κ²½λ‘μλ μλ¬Έμκ° μ ν©νλ€.
URI κ²½λ‘μ λλ¬Έμ μ¬μ©μ νΌνλλ‘ νλ€.
6. νμΌνμ₯μλ URIμ ν¬ν¨νμ§ μλλ€.
REST API μμλ λ©μμ§ λ°λ λ΄μ©μ ν¬λ§·μ λνλ΄κΈ° μν νμΌ νμ₯μλ₯Ό URI μμ ν¬ν¨μν€μ§ μλλ€.
7. 리μμ€ κ°μ μ°κ΄ κ΄κ³κ° μλ κ²½μ°
/리μμ€λͺ
/리μμ€ID/κ΄κ³κ° μλ λ€λ₯Έ 리μμ€ λͺ
ex) GET: /users/2/orders (μΌλ°μ μΌλ‘ μμ μ κ΄κ³λ₯Ό ννν λ μ¬μ©)
'πCS' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
μ λ‘ νΈλ¬μ€νΈ (2) | 2024.11.04 |
---|---|
κΈ°μ λ©΄μ μ§λ¬Έ λͺ¨μ / λ©΄μ CS μ§λ¬Έ λͺ¨μ (2) | 2024.11.03 |
μ€ν λ± νΉ, μ€ν νμ΄λΈμ€, λ§μ΄λ°μ΄ν° 2.0 (0) | 2024.10.30 |
μμ±ν AI: κ°λ , νμ©, μμλλ λ¬Έμ μ (1) | 2024.10.29 |
Access Tokenκ³Ό Refresh Tokenμ μ μ₯ μμΉ (1) | 2024.10.28 |