오류코드 및 메세지 안내

ScienceON API Gateway를 호출하면 HTTP 상태 코드(HTTP status code)로 API 처리 결과를 반환받습니다.
응답값의 형식은 오류 유형에 따라 XML 형식이거나 JSON 형식이 될 수 있습니다. 따라서 API 응답 처리를 할 때는 먼저 HTTP 상태 코드를 통해 정상 처리 여부를 확인하고 응답 형식에 따라 결과를 파싱해 서비스에 사용합니다.

  • 정상 호출: HTTP 상태 코드는 '200'이며, 각 API별로 지정된 형식의 결과값을 반환받습니다.
  • 비정상 호출: HTTP 상태 코드는 400번대와 500번대이며, 각 상태코드별로 지정된 상세 오류 코드와 오류 메시지를 반환받습니다.

주요 HTTP 상태 코드(오류 유형)

ScienceON에서는 다음 9개의 HTTP status code를 사용한다.
Status Code Code Message Description
200 OK 정상 호출인 경우
400 Bad Request Request 데이터에 올바르지 못한 값이 있는 경우
401 Unauthorized 인증이 실패한 경우
403 Forbidden 인증과 상관없이 액세스 금지된 경우
404 Not Found Resource가 존재하지 않는 경우
405 Method Not Allowed 메서드 허용 안됨
500 Internal Server Error 제공 API 측 문제로 인한 실패한 경우
501 Not Implemented REST API 가 아직 구현되지 않은 경우
503 Service Unavailable 일시적으로 API 접속을 할 수 없는 경우 (서버, 네트워크 장애 등)

오류 메시지 형식

오류 메시지는 XML 형식이나 JSON 형식으로 반환됩니다. 오류 메시지는 오류의 내용을 담고 있는 errorMessage 요소와 오류 코드를 담고 있는 errorCode 요소로 구성됩니다. translate.xml과 같이 API 이름에 확장자인 .xml이 있는 API만 XML 형식의 오류 메시지를 반환합니다. 그 외의 API는 JSON 형식의 오류 메시지를 반환합니다.
  • JSON 형식의 오류메세지 형식

    {
        "errorMessage" : "Authentication failed (인증에 실패하였습니다.)",
        "errorCode": "024"
    }

HTTP 상태 코드별 주요 오류코드 및 메세지 설명

301("Moved Permanently")
  • 리소스를 이동시켰을때 사용한다. REST API 리소스 모델이 상당 부분 재설계되었거나 계속 사용할 새로운 URI를 클라이언트가 요청한 리소스에 할당하였다는 것을 나타낸다. REST API는 응답의 Location 헤더에 새로운 URI를 기술해야 한다.

    Error Code Description
    movedPermanently 리소스를 이동시켰을 때 사용한다. REST API 리소스 모델이 상당 부분 재설계되었거나 계속 사용할 새로운 URI를 클라이언트가 요청한 리소스에 할당하였다는 것을 나타낸다. REST API는 응답의 Location 헤더에 새로운 URI를 기술해야 한다.
303("See Other")
  • 다른 URI를 참조하라고 알려줄 때 사용한다. 303 응답은 처리가 끝난 컨트롤러 리소스가 잠재적으로 원하지 않는 응답 바디를 보내는 대신, 응답 리소스의 URI를 내보냈음을 나타낸다. 이것은 임시 상태 메세지의 URI일 수도 있고, 이미 존재하는 영구적인 리소스의 URI일 수도 있다.
    303 상태 코드는 일반적으로 REST API가 클라이언트에 상태 다운로드를 강요하지 않으면서 참조 리소스를 보내는 것을 허용한다. 대신 클라이언트는 응답 Location 헤더에 있는 값으로 GET 요청을 보낼 수 있다.

    Error Code Description
    seeOther 요청은 성공적으로 처리되었다. 응답을 얻기 위해서는 Location 헤더에 지정된 URL에 GET 요청을 보내라.
    mediaDownloadRedirect 요청은 성공적으로 처리되었다. 응답을 얻기 위해서는 Location 헤더에 지정된 URL에 GET 요청을 보내라.