본문으로 건너뛰기

오류

하나로 통일된 오류 형식, 상태 코드, 각각에 대한 대처 방법.

모든 오류에 같은 형식

모든 오류 응답에는 같은 필드가 있어요. statusCode에는 HTTP 상태, code에는 프로그램에서 확인할 수 있는 고정된 코드, message에는 사람이 읽을 메시지가 들어 있어요. 메시지는 바뀔 수 있지만 코드는 바뀌지 않아요.

JSON
{
  "statusCode": 404,
  "code": "not_found",
  "message": "work not found"
}

상태 코드

공개 API를 읽을 때 만날 수 있는 코드는 다음과 같아요.

  • 400invalid_request매개변수가 빠졌거나, 형식이 잘못되었거나, 범위를 벗어났어요.
  • 403forbidden리소스는 있지만 소유자가 비공개로 설정했어요.
  • 404not_found이 주소에는 아무것도 없어요.
  • 429rate_limited내 주소에서 보낸 요청이 너무 많아요. 잠시 기다린 뒤 다시 시도하세요.
  • 500internal_error저희 쪽에서 문제가 생겼어요. 나중에 다시 시도하세요.
  • 503unavailable검색처럼 작업에 필요한 서비스가 잠시 중단되었어요.

잘못된 매개변수

매개변수가 빠졌거나 범위를 벗어나면 400 invalid_request로 응답하고, issues에 각 문제를 매개변수 이름과 함께 나열해요.

JSON
{
  "statusCode": 400,
  "code": "invalid_request",
  "message": "The request parameters are not valid.",
  "issues": ["limit: Too big: expected number to be <=50"]
}

이동한 작품

두 카탈로그 항목이 같은 작품으로 밝혀지면 하나가 다른 하나에 병합돼요. 이전 항목을 요청하면 301로 응답하고, movedTo에 새 ID 또는 새 매체와 슬러그를 담아요. 새 주소로 요청하고 저장해 둔 정보를 업데이트하세요.

HTTP
HTTP/1.1 301 Moved Permanently

{ "movedTo": "01a0cb02-0a14-7877-911d-5b4dde76df72" }

프로필의 비공개 섹션

프로필의 어떤 부분을 공개할지는 회원이 정해요. 숨긴 섹션은 403으로 응답하며, favorites_private, library_private, activity_private, communities_private처럼 해당 섹션을 나타내는 코드가 붙어요. 사용자 이름을 바꾼 회원은 404 member_renamed로 응답하고 username에 새 이름을 담아요.

JSON
{
  "statusCode": 403,
  "code": "favorites_private",
  "message": "You are not allowed to do this."
}