Glowb Dev Docs
시작하기

응답 형식

API 응답 구조 및 에러 처리 방법

응답 형식

Glowb API는 두 가지 응답 형식을 사용합니다. 새로운 API는 ApiResponse 형식을, 일부 기존 API는 ApiResponseWrapper 형식을 사용합니다.

응답 형식 비교

최신 API에서 사용하는 표준 응답 형식입니다.

{
  "status": 200,
  "code": null,
  "message": "요청이 성공적으로 처리되었습니다",
  "data": {
    // 응답 데이터
  }
}
필드타입설명
statusintHTTP 상태 코드
codestring에러 코드 (성공 시 null)
messagestring응답 메시지
dataobject응답 데이터

일부 기존 API에서 사용하는 응답 형식입니다.

{
  "result": {
    // 응답 데이터
  },
  "resultCode": 200,
  "resultMsg": "요청이 성공적으로 처리되었습니다"
}
필드타입설명
resultobject응답 데이터
resultCodeint응답 코드
resultMsgstring응답 메시지

각 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 코드코드설명
400BAD_REQUEST잘못된 요청 형식 또는 유효하지 않은 파라미터
401UNAUTHORIZED인증 필요 또는 토큰 만료
403FORBIDDEN접근 권한 없음
404NOT_FOUND리소스를 찾을 수 없음
409CONFLICT리소스 충돌 (중복 등)
500INTERNAL_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
파라미터타입기본값설명
pageint0페이지 번호 (0부터 시작)
sizeint10페이지 크기
sortstring-정렬 기준 (필드명,방향)

응답

{
  "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

에러 처리 권장사항

  1. HTTP 상태 코드 확인: 먼저 HTTP 상태 코드로 성공/실패를 판단하세요
  2. 에러 코드 활용: code 필드로 구체적인 에러 원인을 파악하세요
  3. 메시지 표시: message 필드는 사용자에게 표시할 수 있습니다
  4. 재시도 로직: 5xx 에러는 일시적일 수 있으므로 재시도 로직을 구현하세요
  5. 토큰 갱신: 401 에러 발생 시 자동으로 토큰 갱신을 시도하세요

On this page