400과 404의 차이에 대해 구글링하던 결과에 대해 정리해 보고자 한다.
자세한 사항은 표준문서 RFC 2616(https://tools.ietf.org/html/rfc2616#section-10.4)을 참고하자.
결론 부터 보자면
400 : 클라이언트(요청자)의 파라미터를 서버에서 이해를 못하는 경우
404 : 서버에 매핑되는 uri가 존재하지 않는 경우
라고 정의되어 있다.
에러 내용으로는 400은 Bad Request고 404는 Not Found이니 비지니스에서 요청에 의한 결과를 못 찾으면 404를 반환 해야할 것 같지만 정답은 400 인 것이다.
표준 문서를 들여다보는 습관은 해답을 빠르게 찾게 해주는 것 같다.
Resource의 중복 처리에 대해서는 400 보다는 409 (Conflict)가 어울리는 것 같다.
https://stackoverflow.com/questions/3825990/http-response-code-for-post-when-resource-already-exists
400은 서버에서 이해를 못하는 경우인데 리소스의 중복은 서버 입장에서는 클라이언트의 요청을 이해를 하지만 이미 존재하여 충돌이 생긴거니 409 Conflict가 정확하다고 본다.
400 : 클라이언트(요청자)의 파라미터를 서버에서 이해를 못하는 경우
404 : 서버에 매핑되는 uri가 존재하지 않는 경우
409 : 자원의 현재 상태와 충돌하여 요청을 처리할 수 없는 경우
'프로그래밍' 카테고리의 다른 글
헥사고날 아키텍쳐 - 애플리케이션 헥사곤 (0) | 2024.08.04 |
---|---|
헥사고날 아키텍쳐 - 도메인 헥사곤 (0) | 2024.08.04 |
헥사고날 아키텍쳐 (0) | 2024.08.04 |
Git reset hard 취소하기, 되돌리기, 복원하기 (0) | 2021.05.04 |
Mysql Server Timezone 설정방법 (0) | 2020.11.16 |