Skip to content

HTTP 상태코드 별 핸들링 규칙

unh6unh6 edited this page May 1, 2024 · 7 revisions

🚫 HTTP 상태코드 별 핸들링 규칙


HTTP STATUS CODE : 200

  • 정상적인 요청
  • request로 요청한 데이터가 없다면 body에 payload 없이 상태 코드만 응답
  • request로 요청한 데이터가 있다면 body에 요청한 데이터의 Json data를 payload에 담아서 응답

HTTP STATUS CODE : 4xx

  • 유효하지않은 payload를 담은 요청이거나 예측 가능한 비정상적인 요청
  • body에 들어가는 payload 예시
{
  "code": "USER_NOT_FOUND",
  "httpStatus": "404 NOT FOUND",
  "message": "해당 사용자을 찾을 수 없음."
}
  • api의 4xx번 Error를 클라이언트에서 핸들링 해야한다면 Http Status Code 보다는 payload의 code 필드를 사용할 것을 권장
    • 하나의 api에 같은 HTTP status code를 응답 받게 된다면 클라이언트에서 핸들링 할 수 없음.
    • 최대한 에러 상황에 맞는 http code를 리턴하고 있지만, api의 요구사항이 많아진다면 http code가 겹칠 수 있음.

HTTP STATUS CODE : 500

  • 예측하지 못한 비정상적인 요청
  • 명세서의 요구사항을 잘 확인 후 다시 시도
    • HTTP Method 확인(POST? GET? PUT?)
    • 쿼리 파라미터인지, JSON 파라미터인지 등 입력 요구사항 확인
    • header에 토큰이 필요한지 확인
    • 등 등
  • 명세서 요구사항에 맞는 요청인데도 실패한다면 백엔드팀에 바로 말해주세영 ~

➕ Swagger에서 상태코드 확인법

  • http method나 데이터 타입같은건 직관적으로 딱 보면 알거라고 생각함. 근데 Http code와 상세 code에 대해서는 햇갈릴 수 있어서 추가함
  • 정상적인 응답 예시 -> 아래 그림과 같이 200번 http code와 요구한 payload를 담아서 응답함
    image
  • 비정상적인 응답 예시
    image
  • 사진에 보면 Http 상태 코드 아래 혹은 오른쪽에 적힌 영어가 error 필드에 들어가는 내용
    • 위 사진 순서대로 HTTP STATUS CODE와 body의 code 필드 값
      • HTTP STATUS CODE : 406 / code : RESTRICT_CONTENT_ACCESS
      • HTTP STATUS CODE : 404 / code : ERRAND_NOT_FOUND
      • HTTP STATUS CODE : 401 / code : UNAUTHORIZED_ACCESS