2024. 6. 5. 23:31γTIL
π‘ API, REST API μ λλ‘ μ΄ν΄νκΈ°
1. REST APIλ ?
- RESTλ Representational State TransferλΌλ μ©μ΄μ μ½μλ‘μ 2000λ λμ λ‘μ΄ νλ©μ λ°μ¬νμ λ Όλ¬Έμμ μ΅μ΄λ‘ μκ°λμμ΅λλ€. λ‘μ΄ νλ©μ HTTPμ μ£Όμ μ μ μ€ ν μ¬λμΌλ‘ κ·Έ λΉμ μΉ(HTTP)μ€κ³μ μ°μμ±μ λΉν΄ μ λλ‘ μ¬μ©λμ΄μ§μ§ λͺ»νλ λͺ¨μ΅μ μνκΉμνλ©° μΉμ μ₯μ μ μ΅λν νμ©ν μ μλ μν€ν μ²λ‘μ¨ RESTλ₯Ό λ°ννλ€κ³ ν©λλ€.
2. REST νΉμ§
- RESTμ λνμ μΈ νΉμ§μΌλ‘ μ λνΌμΈν°νμ΄μ€, 무μνμ±, μΊμκ°λ₯, μ체ννꡬ쑰 λ±μ΄ μμ΅λλ€.
• μ λνΌμΈν°νμ΄μ€(Uniform)
- URLλ‘ μ§μ ν 리μμ€μ λν μ‘°μμ ν΅μΌλκ³ νμ μ μΈ μΈν°νμ΄μ€λ‘ μννλ μν€ν μ² μ€νμΌμ λ§ν©λλ€.
• 무μνμ±(Stateless)
- μμ μ μν μνμ 보λ₯Ό λ°λ‘ μ μ₯νκ³ κ΄λ¦¬νμ§ μμ΅λλ€. μΈμ μ 보λ μΏ ν€μ 보λ₯Ό λ³λλ‘ μ μ₯νκ³ κ΄λ¦¬νμ§ μκΈ° λλ¬Έμ μλΉμ€μ μμ λκ° λμμ§κ³ ꡬνμ΄ λ¨μν΄μ§λλ€.
• μΊμκ°λ₯(Casheable)
- RESTμ κ°μ₯ ν° νΉμ§ μ€ νλλ‘ HTTPλΌλ μΉνμ€μ κ·Έλλ‘ μ¬μ©νκΈ° λλ¬Έμ, μΉμμ μ¬μ©νλ κΈ°μ‘΄ μΈνλΌλ₯Ό κ·Έλλ‘ νμ©μ΄ κ°λ₯ν©λλ€. λ°λΌμ HTTPμμ μ¬μ©νλ Last-Modifiedνκ·Έλ E-Tagλ₯Ό μ΄μ©νμ¬ μΊμ± κΈ°λ₯μ μ μ©ν μ μμ΅λλ€.
• μ체ννꡬ쑰(Self-descriptiveness)
- REST API λ©μΈμ§λ§ λ³΄κ³ λ μ΄λ₯Ό μ½κ² μ΄ν΄ν μ μλ μ체 νν κ΅¬μ‘°λ‘ λμ΄μμ΅λλ€.
3. RESTμ ꡬμ±μμ
- RESTλ μμ(Resource)-URL / νμ(Verb)-HTTP Method / νν(Representations)μΌλ‘ ꡬμ±λμ΄ μμ΅λλ€.
4. REST API μ€κ³
- REST API μ€κ³μ κ°μ₯ μ€μν νλͺ©μ URLμ μ 보μ μμμ ννν΄μΌνκ³ , μμμ λν νμλ HTTP Method (GET, POST, PUT, DELETE)λ‘ ννν΄μΌν©λλ€.
• URLμ μ 보μ μμμ ννν΄μΌ νλ€.
ex) GET/movies/1
• μμμ λν νμλ HTTP Methodλ‘ ννν΄μΌ νλ€.
- GET: 리μμ€ μ‘°νν λ μ¬μ© / POSTλ 리μμ€λ₯Ό μμ±ν λ μ¬μ© / PUTμ 리μμ€λ₯Ό μμ ν λ μ¬μ© / DELETEλ 리μμ€ μμ ν λ μ¬μ©ν©λλ€.
5. URL μ€κ³μ μ£Όμμ
• μ¬λμ ꡬλΆμ(/)λ κ³μΈ΅ κ΄κ³λ₯Ό λνλ΄λ λ° μ¬μ©ν©λλ€.
ex) http://example.com/movies/comic/1
• νμ΄ν(-)μ url κ°λ μ±μ λμ΄λλ° μ¬μ©ν©λλ€.
• λ°μ€(_)μ urlμ μ¬μ©νμ§ μμ΅λλ€.
• url κ²½λ‘μλ μλ¬Έμκ° μ ν©ν©λλ€.
+ HTTP μλ΅ μνμ½λ μ 리
- 200 : ν΄λΌμ΄μΈνΈμ μμ²μ μ μμ μΌλ‘ μν
- 210 : ν΄λΌμ΄μΈνΈκ° μ΄λ ν 리μμ€ μμ±μ μμ², ν΄λΉ 리μμ€κ° μ±κ³΅μ μΌλ‘ μμ±λ¨
- 301 : 리μμ€μ λν URLμ΄ λ³κ²½λμμ λ μ¬μ©
- 400 : ν΄λΌμ΄μΈνΈμ μμ²μ΄ λΆμ μ ν κ²½μ° μ¬μ©νλ μλ΅ μ½λ
- 401 : μΈμ¦λμ§ μμ μνμμ 보νΈλ 리μμ€λ₯Ό μμ²νμ λ μ¬μ©
- 404 : μμ²ν 리μμ€κ° μ‘΄μ¬νμ§ μμ λ μ¬μ©
'TIL' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
TIL ( κ°μ²΄μ§ν₯ νλ‘κ·Έλλ° ) (0) | 2024.06.10 |
---|---|
TIL(μ½λ리νν λ§ Code-Refactoring) (0) | 2024.06.07 |
TIL ( ννλ‘μ νΈ-νλ‘μ°κΈ°λ₯ ) (1) | 2024.06.04 |
TIL ( Git/GitHub non-fast-forword μ€λ₯ ) (0) | 2024.06.03 |
TIL (쿼리μ€νΈλ§, URL νλΌλ―Έν°, Body) (0) | 2024.05.31 |