-
Notifications
You must be signed in to change notification settings - Fork 1
HTTP 상태코드 별 핸들링 규칙
unh6unh6 edited this page May 1, 2024
·
7 revisions
- 정상적인 요청
- request로 요청한 데이터가 없다면 body에 payload 없이 상태 코드만 응답
- request로 요청한 데이터가 있다면 body에 요청한 데이터의 Json data를 payload에 담아서 응답
- 유효하지않은 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 Method 확인(POST? GET? PUT?)
- 쿼리 파라미터인지, JSON 파라미터인지 등 입력 요구사항 확인
- header에 토큰이 필요한지 확인
- 등 등
- 명세서 요구사항에 맞는 요청인데도 실패한다면 백엔드팀에 바로 말해주세영 ~
- http method나 데이터 타입같은건 직관적으로 딱 보면 알거라고 생각함. 근데 Http code와 상세 code에 대해서는 햇갈릴 수 있어서 추가함
- 정상적인 응답 예시 -> 아래 그림과 같이 200번 http code와 요구한 payload를 담아서 응답함
- 비정상적인 응답 예시
- 사진에 보면 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
- 위 사진 순서대로 HTTP STATUS CODE와 body의 code 필드 값