π CRUD κ° κΈ°λ₯λ³ Request/Response Body μμΉκ³Ό ν¨ν΄ μλ²½ μ΄ν΄νκΈ°
μ μ΄ λ¬Έμλ₯Ό μμ±νλ? π€
API λͺ μΈμ μμ± κ³Όμ μμ CRUDμ Request / Response Body μμλ₯Ό ꡬννλ©΄μ, Request / Response Bodyμ λν
μμ± μμΉκ³Ό ν¨ν΄μ μ λλ‘ μμ§ λͺ»νμ¬ μ 리ν νμ΅ λ ΈνΈμ λλ€.
π― ν΅μ¬ λͺ©ν.
CRUDμ Request / Response Body μμ± μμΉκ³Ό λ°©λ²μ μλ²½ν μ΄ν΄νμ!
πͺ΅π¦Ά λͺ©μ°¨
- CRUDμ Request / Response Body μμ± μμΉ.
- CRUDμ Request / Response Body μμ± λ°©λ².
π¦ CRUDμ Request / Response Body μμ± μμΉ
API λͺ
μΈμμ Bodyλ βμ΅μνμ μ λ³΄λ‘ λͺ
ννκ² μν΅νλ€β λ λμμΉμ λ°λ¦
λλ€.
κ° HTTP Methodμ μν μ λ°λΌ νμν μ 보λ₯Ό μ£Όκ³ λ°λλ‘ μ€κ³ν©λλ€.
-
C (Create -
POST
):-
Request :
- μλ‘μ΄ λ¦¬μμ€λ₯Ό λ§λλ λ° νμν λͺ¨λ μ 보λ₯Ό λ΄μ΅λλ€.
- λ¨, μλ²κ° μλμΌλ‘ μμ±νλ κ°(ID, μμ±μΌμ λ±)μ μ μΈν©λλ€.
-
Response :
- μμ±λ 리μμ€μ μμ ν μνλ₯Ό λ°ννμ¬, ν΄λΌμ΄μΈνΈκ° IDλ μλ² μμ± κ°μ λ€μ μμ²ν νμκ° μκ² ν©λλ€.
-
Request :
-
R (Read -
GET
):-
Request :
- Bodyλ₯Ό μ¬μ©νμ§ μμ΅λλ€.
- λͺ¨λ 쑰건μ URL κ²½λ‘(Path Variable)λ 쿼리 νλΌλ―Έν°(Query Parameter)λ‘ μ λ¬ν©λλ€.
-
Response :
- μ‘°νλ 리μμ€μ μ 보λ₯Ό λ΄μ΅λλ€.
-
λ¨μΌ 리μμ€λ κ°μ²΄(
{}
), λͺ©λ‘μ λ°°μ΄([]
) λ‘ λ°νν©λλ€.
-
Request :
-
U (Update -
PATCH
/PUT
):-
Request :
- λ³κ²½νλ €λ λ°μ΄ν°λ§ λ΄μ΅λλ€.
-
PATCH
λ λ³κ²½ν νλλ§,PUT
λ 리μμ€ μ 체λ₯Ό 보λ λλ€.
-
Response :
- μμ μ΄ μλ£λ 리μμ€μ μμ ν μνλ₯Ό λ°ννμ¬, ν΄λΌμ΄μΈνΈκ° μμ κ²°κ³Όλ₯Ό λͺ νν μ μ μκ² ν©λλ€.
-
Request :
-
D (Delete -
DELETE
):-
Request :
- Bodyλ₯Ό μ¬μ©νμ§ μμ΅λλ€.
- μμ ν λμμ URL κ²½λ‘λ‘ μλ³ν©λλ€.
-
Response :
- μ±κ³΅μ μΌλ‘ μμ λμμμ μ리기 μν΄ Bodyλ₯Ό λΉμλλ κ²μ΄ μμΉμ
λλ€. (μν μ½λ
204 No Content
μ¬μ©)
- μ±κ³΅μ μΌλ‘ μμ λμμμ μ리기 μν΄ Bodyλ₯Ό λΉμλλ κ²μ΄ μμΉμ
λλ€. (μν μ½λ
-
Request :
π¦ CRUDμ Request / Response Body μμ± λ°©λ²
μ μμΉμ λ°λΌ μμμΈ βμν κ΄λ¦¬ APIβμ κ° Bodyλ₯Ό μ΄λ»κ² μμ±νλμ§ λ³΄μ¬λλ¦¬κ² μ΅λλ€.
C: μν λ±λ‘ (POST /products
)
-
Request Body:
-
λͺ©μ :
- μ κ· μν μ 보μ μ΄κΈ° μ¬κ³ μ 보λ₯Ό μ λ¬ν©λλ€.
-
λ΄μ©:
-
productName
,productSaleCost
,initialStockCount
,expirationDate
λ± μ¬μ©μκ° μ§μ μ λ ₯ν΄μΌ νλ λͺ¨λ νλλ₯Ό ν¬ν¨ν©λλ€. -
productId
λ ν¬ν¨νμ§ μμ΅λλ€.
-
-
λͺ©μ :
{
"productName": "μ μ ν λͺ©μ₯ μ°μ 1L",
"productSaleCost": 2500,
"initialStockCount": 5,
"expirationDate": "2025-08-18"
}
-
Response Body:
-
λͺ©μ :
- μλ²μμ μμ±λ
productId
,createdAt
κ³Ό κ³μ°λmargin
λ±μ ν¬ν¨ν μμ ν μν μ 보λ₯Ό ν΄λΌμ΄μΈνΈμκ² μλ €μ€λλ€.
- μλ²μμ μμ±λ
-
λ΄μ©:
-
productId
λ₯Ό ν¬ν¨ν λͺ¨λ νλμ κ³μ°λ κ°μ λ΄μ΅λλ€.
-
-
λͺ©μ :
{
"productId": "8801234567890",
"productName": "μ μ ν λͺ©μ₯ μ°μ 1L",
"totalStockCount": 8,
"createdAt": "2025-08-09",
"margin": 25.5,
...
}
R: μν κ²μ (GET /products?name=...
)
-
Request Body:
- μ¬μ©νμ§ μμ΅λλ€.
-
Response Body:
-
λͺ©μ :
- κ²μ 쑰건μ λ§λ μν λͺ©λ‘μ μ λ¬ν©λλ€.
-
λ΄μ©:
- κ° μνμ μμ½ μ 보λ₯Ό λ΄μ κ°μ²΄λ±μ λ°°μ΄(
[]
) ννμ λλ€. - κ²°κ³Όκ° μμΌλ©΄ λΉ λ°°μ΄(
[]
)μ λ°νν©λλ€.
- κ° μνμ μμ½ μ 보λ₯Ό λ΄μ κ°μ²΄λ±μ λ°°μ΄(
-
λͺ©μ :
[
{ "productId": "8801234567890", "productName": "μ μ ν λͺ©μ₯ μ°μ 1L", ...},
{ "productId": "8801234145725", "productName": "μ§λΌλ©΄ μνλ§ 1ea", ... },
]
U: μν μμ (PATCH /products/{productId}
)
-
Request Body:
-
λͺ©μ :
- λ³κ²½ν μ λ³΄λ§ μ λ¬νμ¬ ν¨μ¨μ±μ λμ λλ€.
-
λ΄μ©:
-
productSaleCost
,productDiscountRate
λ± λ³κ²½μ΄ νμν νλλ§ ν¬ν¨ν©λλ€.
-
-
λͺ©μ :
{
"productSaleCost": 3200
"productDiscountRate": 20
}
-
Response Body:
-
λͺ©μ :
- μμ μ΄ λ°μλ μ΅μ’ κ²°κ³Όλ₯Ό ν΄λΌμ΄μΈνΈκ° νμΈν μ μκ²ν©λλ€.
-
λ΄μ©:
- μμ λ νλλΏλ§ μλλΌ, κ·Έλ‘ μΈν΄ ν¨κ» λ³κ²½λ κ³μ°κ°(
margin
λ±)κΉμ§ ν¬ν¨ν μνμ μ 체 μ 보λ₯Ό λ΄μ΅λλ€.
- μμ λ νλλΏλ§ μλλΌ, κ·Έλ‘ μΈν΄ ν¨κ» λ³κ²½λ κ³μ°κ°(
-
λͺ©μ :
{
"productId": "8801234567890",
"productSaleCost": 3200,
"productDiscountRate": 20,
"margin": 31.2 // μ¬κ³μ°λ κ°
...
}
D: μν μμ (DELETE /products/{productId}
)
-
Request Body:
- μ¬μ©νμ§ μμ΅λλ€.
-
Response Body:
- λΉμ΄ μμ΅λλ€.
- μμ μ±κ³΅ μ¬λΆλ HTTP μν μ½λ(
204 No Content
)λ‘ μ λ¬ν©λλ€.