오류
하나로 통일된 오류 형식, 상태 코드, 각각에 대한 대처 방법.
모든 오류에 같은 형식
모든 오류 응답에는 같은 필드가 있어요. statusCode에는 HTTP 상태, code에는 프로그램에서 확인할 수 있는 고정된 코드, message에는 사람이 읽을 메시지가 들어 있어요. 메시지는 바뀔 수 있지만 코드는 바뀌지 않아요.
{
"statusCode": 404,
"code": "not_found",
"message": "work not found"
}상태 코드
공개 API를 읽을 때 만날 수 있는 코드는 다음과 같아요.
- 400
invalid_request매개변수가 빠졌거나, 형식이 잘못되었거나, 범위를 벗어났어요. - 403
forbidden리소스는 있지만 소유자가 비공개로 설정했어요. - 404
not_found이 주소에는 아무것도 없어요. - 429
rate_limited내 주소에서 보낸 요청이 너무 많아요. 잠시 기다린 뒤 다시 시도하세요. - 500
internal_error저희 쪽에서 문제가 생겼어요. 나중에 다시 시도하세요. - 503
unavailable검색처럼 작업에 필요한 서비스가 잠시 중단되었어요.
잘못된 매개변수
매개변수가 빠졌거나 범위를 벗어나면 400 invalid_request로 응답하고, issues에 각 문제를 매개변수 이름과 함께 나열해요.
{
"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/1.1 301 Moved Permanently
{ "movedTo": "01a0cb02-0a14-7877-911d-5b4dde76df72" }프로필의 비공개 섹션
프로필의 어떤 부분을 공개할지는 회원이 정해요. 숨긴 섹션은 403으로 응답하며, favorites_private, library_private, activity_private, communities_private처럼 해당 섹션을 나타내는 코드가 붙어요. 사용자 이름을 바꾼 회원은 404 member_renamed로 응답하고 username에 새 이름을 담아요.
{
"statusCode": 403,
"code": "favorites_private",
"message": "You are not allowed to do this."
}