π[Backend Development] API λͺ μΈμ κ°λ° κ³Όμ 5λ¨κ³
API λͺ μΈμ μ€κ³λ μꡬμ¬ν λΆμλΆν° μμνμ¬ μ μ§μ μΌλ‘ ꡬ체ννλ μμλ‘ μ§νλ©λλ€.
β 1. μꡬμ¬ν λΆμ λ° κΈ°λ₯ μ μ.
κ°μ₯ λ¨Όμ β무μμ λ§λ€ κ²μΈκ°βλ₯Ό μ μν©λλ€.
κ°λ°ν κΈ°λ₯ λͺ©λ‘μ ꡬ체μ μΌλ‘ μμ±νκ³ , κ° κΈ°λ₯μ νμν λ°μ΄ν°κ° 무μμΈμ§ νμ
ν©λλ€.
- μ°μΆλ¬Ό : κΈ°λ₯ λͺ©λ‘ (μ: μν λͺ©λ‘, μν κ²μ, μ£Όλ¬Έ μμ± λ±)
β 2. 리μμ€ μλ³ λ° URL μ€κ³
κΈ°λ₯ λͺ©λ‘μ λ°νμΌλ‘ APIκ° λ€λ£° ν΅μ¬ λμ, μ¦ λ¦¬μμ€(Resource) λ₯Ό μλ³νκ³ URLμ μ€κ³ν©λλ€.
RESTful μμΉμ λ°λΌ URLμ μμμ βλͺ
μ¬βλ₯Ό, HTTP Methodλ βλμ¬βλ₯Ό λνλ΄λλ‘ κ΅¬μ±ν©λλ€.
-
μ°μΆλ¬Ό : API μλν¬μΈνΈ λͺ©λ‘ (
POST /products
,GET /products
,PATCH /products/{productId}
λ±)
β 3. λ°μ΄ν° λͺ¨λΈλ§ (Request/Response DTO μ€κ³)
κ° μλν¬μΈνΈκ° μ£Όκ³ λ°μ λ°μ΄ν°μ ꡬ체μ μΈ ννλ₯Ό μ€κ³ν©λλ€.
μ΄λ μμ²(Request)κ³Ό μλ΅(Response)μ μ¬μ©ν DTO(Data Transfer Object)μ νλ, λ°μ΄ν° νμ
, νμ μ¬λΆ λ±μ μ μν©λλ€.
- μ°μΆλ¬Ό : κ° APIλ³ Request/Response DTOμ μμΈ κ΅¬μ‘°
β 4. μν μ½λ λ° μλ¬ μ²λ¦¬ μ μ
APIκ° μ±κ³΅νμ λλΏλ§ μλλΌ, λ€μν μ€ν¨ μν©(μ λ ₯κ° μ€λ₯, κΆν μμ, μλ² μ€λ₯ λ±)μ λν μ΄λ€ HTTP μν μ½λλ₯Ό λ°ννκ³ , μ΄λ€ μλ¬ λ©μμ§λ₯Ό 보μ¬μ€μ§ μμΈνκ² μ μν©λλ€.
-
μ°μΆλ¬Ό : μν μ½λλ³ μλ΅ νμ(
201 Created
,400 Bad Request
,404 Not Found
λ±)
β 5. κ²ν λ° λ¬Έμν
μμ±λ μ€κ³λ₯Ό λ°νμΌλ‘ μ΅μ’
API λͺ
μΈμλ₯Ό μμ±ν©λλ€.
νμλ€κ³Ό ν¨κ» κ²ν νλ©° νΌλλ°±μ ν΅ν΄ μ€κ³λ₯Ό κ°μ νκ³ νμ ν©λλ€.
μ΄ λ¨κ³μμ Swagger/OpenAPIμ κ°μ λꡬλ₯Ό μ¬μ©ν΄ λ¬Έμλ₯Ό μμ±νλ©΄ νμ
μ λ§€μ° ν¨μ¨μ μ
λλ€.
- μ°μΆλ¬Ό : μ΅μ’ API λͺ μΈ λ¬Έμ (Swagger, Notion, Confluence λ±)