Http status code
많이 사용하지만, 어떤 상황에 적절한 것인가에 대해서는 사람마다 다를거라 생각하고,
자기의 스타일에 맞게 혹은 회사의 스타일에 맞게 사용하면 된다
내가 사용해야겠다고 생각한 status에 대해 정리하고,
사용할지 말지 고민했던 status code는 왜 사용하려 했는지,
사용을 안하게된 이유를 정리해야겠다
200 OK
예외가 없는 request, 혹은 에러가 발생하지 않는 대부분의 경우 200
을 사용할것이다
GET
, PATCH
, DELETE
메서드에서 주로 사용되며
요청이 정상적으로 완료가 되었을 때 사용된다
201 Created
POST
메서드에서 사용하는 status code
유저가 무언가를 생성하는 요청을 할때, 정상적으로 생성이 되었다면 201
을 내보내준다
유저의 회원가입이 될수도, 게시판에 글을 작성할 수도 있는 여러 상황에서 새로운 무언가를 생성했다면 201
로 내보내준다
204 No Content
이 친구때문에 좀 헷갈렸고, mdn에서 자세히 읽어보니
PUT
, DELETE
메서드를 사용하여 요청을 했을 때, 해당하는 데이터가 없는 경우
이미 삭제가 되었거나, 업데이트 할 내용이 없는 경우 204
코드를 사용한다
PUT
이 아닌 부분 업데이트에서 사용하는 메서드인 PATCH
에서 사용해도 상관 없을 것같다
따라서 GET
메서드에서 response해줄 데이터가 없는 경우에는 적절하지 않다
특이한 점은 response body에 값을 담아서 response해주어도 아무 값도 들어가지 않는다
나머지 200번대 코드들중에서는 더 이상 사용할게 없다고 생각되고
추가적으로 필요하다면 202 Accepted
정도가 있을 것 같다
400 Bad Request
HyperText Transfer Protocol (HTTP) 400 Bad Request 응답 상태 코드는
서버가 클라이언트 오류(예: 잘못된 요청 구문, 유효하지 않은 요청 메시지 프레이밍,
또는 변조된 요청 라우팅) 를 감지해 요청을 처리할 수 없거나, 하지 않는다는 것을 의미합니다.
말이 좀 어렵다
서버에서의 오류가 아닌 요청을 잘못보냇을 경우 사용된다
400
이외에 에러코드에서 사용할 코드가 있는 경우가 아니라면 대부분 400
으로 내보낸다
간단하게 이런경우 400
이다
요청을 보냈지만, 서버에서 필요한 정보를 보내지 않은 경우 (잘못된 요청 구문)
401 Unauthorized, 403 Forbidden
둘은 묶어서 정리하는게 좋을 것 같다
로그인 페이지에서 로그인 실패 -> 401
로그인 성공후 권한이 없는 경우 -> 403
간단하게 보면 위와 같은 경우이다
401
은 유저에 대한 인증이 안된 경우고,
403
은 유저에세 권한이 없는 경우다
404 NotFound
인터넷에 돌아다니다 보면 굉장히 많이본 페이지일 것 같다
해당 url이 존재 하지 않는 경우에 사용된다
궁금증에 도메인 뒤에 아무거나 붙여보면서 어떻게 나오나 해보면 not found일 경우
아예 home화면으로 돌아오는 경우도 보인다
사실 이 글을 쓰게된 이유다
요청에 대한 값이 없을 경우 어떻게 내보내야 할지 고민하던 차에 공부할 겸 찾아봤다
요청을 했지만 요청에 대한 데이터가 없는 경우, 혹은 자원이 없는 경우 두가지로 나뉠것 같다
보통의 경우에는 query string혹은 parameter가 들어왔는지 확인 후 없는 경우 예외처리를 해주게 될텐데, 이런 경우는 해당 자원이 없으므로 404를 내보내주어 자원이 없다고 알리고
id를 보냈지만, 해당 아이디에 대한 데이터가 없는 경우라면 200, result: null 요런식으로
해당 요청에 대한 데이터가 없다고 알리는 것이 좋다고 생각한다
statusCode
를 내보내는 기준은 요청에 대한 response를 내보낼 때
요청에 포함된 자원으로 모든 과정이 문제없이 처리가 되었다면 200번대를 내보내야 겠다고 생각했다
mdn: https://developer.mozilla.org/ko/docs/Web/HTTP/Status
200 vs 404: https://brainbackdoor.tistory.com/137
이번에 찾아보면서 statusCode에 대한 글도 많이 봤지만, 가장 눈에 띄었던 글은 200 vs 404
였다
어떤 statusCode를 내보내던지 내보낸 이유가 있고, 문서만 잘 정리되어있으면 괜찮을 것같다