ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • HTTP 상태 에러 코드
    HTTP 2021. 12. 24. 20:58

    코드를 작성하고 테스트를 하다 보면 가장 많이 마주하게 되는 HTTP 상태 코드가 400 ~ 500 입니다.

    많이 부딪혔던 HTTP 상태 에러 코드에 대해 알아보고 조금씩 범위를 넓혀가고자 합니다.

     

    4XX : Client error responses

    400번대의 경우 유저가 직접 리소스 충돌을 없애고 요청을 다시 보내야 하는 상황입니다.

     

     

    400 : Bad request

    The request could not be understood by the server due to malformed syntax. The client SHOULD NOT repeat the request without modifications.

     - 요청이 잘못된 경우의 가장 일반적인 에러 코드

     - 요청한 데이터의 형식이 맞지 않거나 누락되서 없는 경우

     - 일반적인 validation error의 경우

     

    ex) json 타입으로 데이터 와야하는데 string 타입으로 온 경우

    ex) 이메일 또는 비밀번호 유효성 검사시 적합하지 않은 경우

    ex) KeyError : dictionary 안에 key에 해당하는 값이 없는 경우

     

     

    401 : Unauthorized

    The request requires user authentication.

     - 클라이언트의 권한이 인증되지 않아서 더 이상의 작업 진행이 불가능하다는 의미

     

    ex) 로그인이 필요한데 로그인하지 않은 상태로 요청하는 경우

     

     

    403 : Forbidden

    The server understood the request, but is refusing to fulfill it.

     - 서버가 클라이언트의 요청을 이해했지만 해당 클라이언트에게 그 권한이 없어서 요청이 거부되었음을 의미

     

    ex) 로그인해서 다른 유저의 결제 내역이나 장바구니를 보여달라는 요청을 할 경우

     

     

    404 : Not Found

    The server has not found anything matching the Request-URI.

    URL를 다르게 입력한 경우 404 Not Found

     - 크게 본다면 위의 경우처럼 입력한 경로가 존재하지 않는 경우에 생기는 에러 코드입니다. 

     

    ex) /users/login 으로 입력해야 하는데 다르게 입력한 경우

    ex) /users/articles/2 로 입력했는데 해당 article이 존재하지 않을 경우

     

     

    409 : Conflict

    The request could not be completed due to a conflict with the current state of the resource. This code is only allowed in situations where it is expected that the user might be able to resolve the conflict and resubmit the request.

     - 리소스의 현재 상태와 충돌하여 요청을 처리할 수 없으므로 클라이언트가 충돌을 수정해서 재요청 보내라는 의미

     

    ex) 이미 DB에 데이터가 있어서 해당 요청을 처리할 수 없는 경우 (같은 아이디나 이메일을 등록하려는 경우 등)

     


    5XX : Server error responses

    요청을 처리하는 과정에서 서버가 예상하지 못한 상황에 놓였다는 의미

     

    500 : Internal Server Error

    The server encountered an unexpected condition which prevented it from fulfilling the request.

     - 더 명확한 어떤 에러 메세지에 적합하지 않은 경우에 발생하는 포괄적인 에러 메세지.

       서버에 문제가 있지만 정확히 어떤 문제가 있는지 설명할 수 없는 경우

     

    500 - JSONDecodeError
    500 - KeyError
    500 - Model.DoesNotExist
    500 - 'get'을 사용했는데 값이 2개 리턴된 경우

     

     

    HTTP 상태 에러 코드가 발생할 때 아래의 블로그에 잘 정리된 글이 있어서 많이 참고했기에 공유하고자 합니다.
    https://velog.io/@jch9537/HTTP-%EC%9D%91%EB%8B%B5%EC%BD%94%EB%93%9C-http-%EC%9D%91%EB%8B%B5%EC%BD%94%EB%93%9C%EC%9D%98-%EC%84%A0%ED%83%9D

     

    [HTTP] 에러상태코드의 선택

    HTTP 응답코드에 대한 참조문서를 보며 API 명세서를 작성하는 중 응답(특히 에러응답)에 대한 의문점이 생겼다.에러응답에 대한 참조문서(MDN, 기타 등등)을 참조하면서 여러 코드가 나타내는의미

    velog.io

     

    댓글

Designed by Tistory.