TIL # 125: [HTTP] status codes

셀레스틴 허·2021년 5월 18일
1
post-thumbnail

써본 status code 위주로 정리했다.

200 클래스

클라이언트가 요청한 동작을 수신하여 이해했고 승낙했으며 성공적으로 처리했음을 나타낸다.

  • 200(성공): 서버가 요청을 제대로 처리했다는 뜻 - 주로 요청한 페이지를 제공했다는 응답으로 쓰임
  • 201(작성됨): 성공적으로 요청되었으며 서버가 새 리소스 작성 완료

300 클래스

클라이언트는 요청을 마치기 위해 추가적인 동작을 취해야 한다는 것을 나타낸다.

400 클래스

클라이언트에 오류가 있음을 나타낸다.

  • 400(잘못된 요청): 서버가 요청의 구문을 인식하지 못함
  • 401(권한 없음): 인증 안됨(Unauthenticated)
  • 403(금지됨): 서버가 요청을 거부. 사용자가 리소스에 대한 필요 권한을 갖고 있지 않음.
  • 404(찾을 수 없음): 서버가 요청한 페이지(자원)을 찾을수 없다. 서버에 존재하지 않는 페이지에 대한 쵸펑에 대한 응답
  • 410(사라짐): 요청한 리소스가 영구적으로 삭제되었을 때에 대한 응답

401? 403? 권한 없음과 금지됨의 차이

401:

  • 클라이언트가 인증되지 않거나 유효한 인증정보가 부족해서 요청 거부, 정상 처리 X
# 회원 토큰 확인용 데코레이터 속 401 code 적용

def login_decorator(func):
    def wrapper(self, request, *args, **kwargs):
        try:

            access_token = request.headers['Authorization']
            payload      = jwt.decode(access_token, SECRET_KEY, algorithms=ALGORITHM)
            user         = User.objects.get(id=payload['id'])
            request.user = user

        except jwt.exceptions.DecodeError:
            return JsonResponse({"message" : "INVALID_TOKEN"}, status=401)

        except User.DoesNotExist:
            return JsonResponse({"message" : "INVALID_USER"}, status=401)

        return func(self, request, *args, **kwargs)

    return wrapper

403:

  • 서버가 해당 요청을 이해했지만 권한이 없어 요청이 거부됨, 클라이언트는 해당 요청에 대한 권한이 X
  • ex) 사용자 A가 사용자 B의 결제내역을 확인하려고 할 때

500 클래스

서버가 유효한 요청을 명백하게 수행하지 못했음을 나타낸다.

  • 500(내부 서버 오류):서버에 오류가 발생해 요청을 수행할 수 없다

Reference:
문서1
문서2
문서3

profile
Software Developer / 고통은 필연, 괴로움은 선택

0개의 댓글