시작하기
응답 형식
API 응답 구조 및 에러 처리 방법
응답 형식
Glowb API는 두 가지 응답 형식을 사용합니다. 새로운 API는 ApiResponse 형식을, 일부 기존 API는 ApiResponseWrapper 형식을 사용합니다.
응답 형식 비교
최신 API에서 사용하는 표준 응답 형식입니다.
{
"status": 200,
"code": null,
"message": "요청이 성공적으로 처리되었습니다",
"data": {
// 응답 데이터
}
}| 필드 | 타입 | 설명 |
|---|---|---|
status | int | HTTP 상태 코드 |
code | string | 에러 코드 (성공 시 null) |
message | string | 응답 메시지 |
data | object | 응답 데이터 |
일부 기존 API에서 사용하는 응답 형식입니다.
{
"result": {
// 응답 데이터
},
"resultCode": 200,
"resultMsg": "요청이 성공적으로 처리되었습니다"
}| 필드 | 타입 | 설명 |
|---|---|---|
result | object | 응답 데이터 |
resultCode | int | 응답 코드 |
resultMsg | string | 응답 메시지 |
각 API 문서에서 해당 엔드포인트가 사용하는 응답 형식을 확인하세요.
성공 응답
200 OK
요청이 성공적으로 처리되었습니다.
{
"status": 200,
"code": null,
"message": "캠페인 목록 조회 완료",
"data": [
{
"id": 1,
"title": "캠페인 제목"
}
]
}201 Created
새로운 리소스가 생성되었습니다.
{
"status": 201,
"code": null,
"message": "캠페인이 생성되었습니다",
"data": {
"id": 123,
"title": "새 캠페인"
}
}에러 응답
에러 응답 구조
{
"status": 400,
"code": "BAD_REQUEST",
"message": "잘못된 요청입니다",
"data": null
}일반 에러 코드
| HTTP 코드 | 코드 | 설명 |
|---|---|---|
| 400 | BAD_REQUEST | 잘못된 요청 형식 또는 유효하지 않은 파라미터 |
| 401 | UNAUTHORIZED | 인증 필요 또는 토큰 만료 |
| 403 | FORBIDDEN | 접근 권한 없음 |
| 404 | NOT_FOUND | 리소스를 찾을 수 없음 |
| 409 | CONFLICT | 리소스 충돌 (중복 등) |
| 500 | INTERNAL_SERVER_ERROR | 서버 내부 오류 |
비즈니스 에러 코드
| 코드 | 설명 |
|---|---|
MEMBER_NOT_FOUND | 회원을 찾을 수 없음 |
INVALID_PASSWORD | 비밀번호가 일치하지 않음 |
CAMPAIGN_NOT_FOUND | 캠페인을 찾을 수 없음 |
ALREADY_APPLIED | 이미 신청한 캠페인 |
APPLICATION_CLOSED | 신청이 마감됨 |
PAYMENT_FAILED | 결제 실패 |
INSUFFICIENT_BALANCE | 잔액 부족 |
페이지네이션
목록 조회 API는 다음과 같은 페이지네이션 형식을 사용합니다.
요청
GET /api/campaigns?page=0&size=10&sort=createdAt,desc| 파라미터 | 타입 | 기본값 | 설명 |
|---|---|---|---|
page | int | 0 | 페이지 번호 (0부터 시작) |
size | int | 10 | 페이지 크기 |
sort | string | - | 정렬 기준 (필드명,방향) |
응답
{
"status": 200,
"message": "조회 성공",
"data": {
"content": [
// 데이터 목록
],
"totalElements": 100,
"totalPages": 10,
"size": 10,
"number": 0,
"first": true,
"last": false
}
}날짜/시간 형식
모든 날짜/시간은 ISO 8601 형식을 따릅니다.
{
"createdAt": "2024-01-15T09:30:00",
"updatedAt": "2024-01-15T10:45:30"
}파일 업로드
파일 업로드는 multipart/form-data 형식을 사용합니다.
POST /api/upload
Content-Type: multipart/form-data
--boundary
Content-Disposition: form-data; name="data"
Content-Type: application/json
{"title": "제목"}
--boundary
Content-Disposition: form-data; name="file"; filename="image.jpg"
Content-Type: image/jpeg
(binary data)
--boundary--최대 파일 크기: 200MB
에러 처리 권장사항
- HTTP 상태 코드 확인: 먼저 HTTP 상태 코드로 성공/실패를 판단하세요
- 에러 코드 활용:
code필드로 구체적인 에러 원인을 파악하세요 - 메시지 표시:
message필드는 사용자에게 표시할 수 있습니다 - 재시도 로직: 5xx 에러는 일시적일 수 있으므로 재시도 로직을 구현하세요
- 토큰 갱신: 401 에러 발생 시 자동으로 토큰 갱신을 시도하세요