본문 바로가기
IT/Programing Tip

REST API 오류코드 설계하기

by DOSGamer 2019. 8. 2.
반응형

API 서비스를 만드는 데

REST API 를 처음 만들다 보니 API 응답코드 가 남들은 어떻게 사용하는 지 궁금해졌다

그래서 3개사의 OPEN API 를 벤치마킹 해봤다

카카오 OPEN API

카카오 개발가이드 : https://developers.kakao.com/docs/restapi/quick-reference#%EC%9D%91%EB%8B%B5-%EC%BD%94%EB%93%9C

HTTP 상태코드 와 JSON 내에 음수로 에러코드를 제공해준다

상태코드는

  • 정상 : 200
  • 사용자오류 : 400대
  • 시스템오류 : 500대

 

NHN OPEN API

NHN TOAST Meetup REST API 참고글 : https://meetup.toast.com/posts/92

상태코드는

  • 정상 : 200
  • 사용자오류 : 400대
  • 시스템오류 : 500대

상태코드 표시에 작성자의 의견이 들어있음 (403 은 보안에 안좋으니 404로 대체해라, 등록은 201 을 써라 등)

 

네이버 OPEN API

네이버 개발자센터 오류코드 : https://developers.naver.com/docs/common/openapiguide/errorcode.md

응답코드는

  • 사용자오류 : 400대
  • 시스템오류 : 500대

오류코드에 대해서 오류메시지를 보내는 방식을 취하고 있습니다

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

 

조합결과

HTTP 상태코드는 크게 3가지 종류로 정의하고

  • 정상 : 200
  • 사용자오류 : 400대
  • 시스템오류 : 500대

400, 500대 에러 발생시에 사용자들이 알 수 있도록

에러메시지와 에러코드를 추가로 보내줘야 한다

 

    if (typeof custid !== 'string') {
        console.error('custid Validation Failed');
        return { statusCode: 400, body: JSON.stringify('custid is invalid')};
    }

    if (flag !== 'Y' && flag !== 'N') {
        console.error('flag Validation Failed');
        return { statusCode: 400, body: JSON.stringify('flag is invalid')};
    }

    if (!version) {
        console.error('version Validation Failed');
        return { statusCode: 400, body: JSON.stringify('version is invalid') };
    }

serverless framework + API Gateway + lambda 로 만들면서 이렇게 해놨는데

에러메시지만 주고 에러코드는 전달을 하지 않고 있었다

body 영역을 네이버 같이 변경해야 겠다

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