API Response Convention - PIC-2-team/PIC-2-team-project GitHub Wiki
API μλ΅ ν¬λ§· 컨벀μ
FE(React) + BE(Spring Boot) κ³΅ν΅ μ½μ
μ΅μ΄ μμ±: 2026-10-08
κ³΅ν΅ Envelope
λͺ¨λ API μλ΅μ μλ ꡬ쑰λ₯Ό λ°λ₯Έλ€.
μ±κ³΅
{
"success": true,
"data": { }
}
μλ¬
{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "μ΄λ©μΌμ νμμ
λλ€"
}
}
νμ΄μ§λ€μ΄μ λͺ©λ‘
{
"success": true,
"data": {
"items": [],
"pagination": {
"page": 1,
"pageSize": 20,
"totalItems": 142,
"totalPages": 8
}
}
}
HTTP μν μ½λ
| μ½λ | μν© |
|---|---|
200 |
μ‘°ν, μμ μ±κ³΅ |
201 |
μμ± μ±κ³΅ |
400 |
μλͺ»λ μμ² (νμ μ€λ₯) |
401 |
λ―ΈμΈμ¦ |
403 |
μΈκ° μμ |
404 |
리μμ€ μμ |
409 |
νμ¬ λ¦¬μμ€ μνμ μΆ©λ (μ€λ³΅, μ€λλ μμ μ μ λ±) |
422 |
μ ν¨μ± κ²μ¦ μ€ν¨ |
413 |
μμ² νμΌ/λ³Έλ¬Έ ν¬κΈ° μ ν μ΄κ³Ό |
415 |
μ§μνμ§ μλ λ―Έλμ΄ νμ |
500 |
μλ² λ΄λΆ μ€λ₯ |
μλ¬ μ½λ
| code | μ€λͺ |
|---|---|
VALIDATION_ERROR |
μ λ ₯κ° κ²μ¦ μ€ν¨ |
NOT_FOUND |
리μμ€ μμ |
UNAUTHORIZED |
λ‘κ·ΈμΈ νμ |
FORBIDDEN |
κΆν μμ |
DUPLICATE |
μ€λ³΅ (μ΄λ©μΌ λ±) |
CONFLICT |
νμ¬ λ¦¬μμ€ μνμ μμ²μ΄ μΆ©λ |
PAYLOAD_TOO_LARGE |
μμ² ν¬κΈ° μ ν μ΄κ³Ό |
UNSUPPORTED_MEDIA_TYPE |
μ§μνμ§ μλ μ½ν μΈ /νμΌ νμ |
INTERNAL_ERROR |
μλ² λ΄λΆ μ€λ₯ |
λ μ§ ν¬λ§·
ISO 8601 ν΅μΌ
"2026-10-08T14:30:00Z"
FE β TypeScript νμ
type ApiResponse<T> =
| { success: true; data: T }
| { success: false; error: { code: string; message: string } };
type PaginatedData<T> = {
items: T[];
pagination: {
page: number;
pageSize: number;
totalItems: number;
totalPages: number;
};
};
μ νμ
μ frontend/src/types/common.tsμ μ μλμ΄ μλ€.
BE β Spring Boot κ³΅ν΅ ν΄λμ€
BE-Setup μ°Έκ³
λ³κ²½ μ΄λ ₯
| λ μ§ | λ΄μ© | μμ±μ |
|---|---|---|
| 2026-10-09 | API v1μ μμ μ μ μΆ©λ λ° νμΌ μ λ‘λ μ€λ₯ μ½λ μΆκ° | Codex |
| 2026-10-08 | μ΅μ΄ μμ± |