적절한 HTTP 상태코드로 응답하기

2022. 1. 11. 17:50강의 정리/Django Views

반응형

출처 : https://www.inflearn.com/course/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%9E%A5%EA%B3%A0-%EC%9B%B9%EC%84%9C%EB%B9%84%EC%8A%A4/dashboard

 

장고(Django)를 배우기 시작한 입문자이시거나, 또는 배우고 싶은 생각이 있으신 분은 위 출처의 강의를 적극 추천드립니다!!!

 

 


 

 

HTTP 상태코드

  • 웹서버는 적절한 상태코드로서 응답해야 함
  • HttpResponse 클래스마다 고유한 status_code가 할당 (코드)
  • REST API를 만들 때, 특히 유용

 

상태코드 사용법 

def test_view(request):
	# 201 상태코드를 반환한다.
    return HttpResponse(status=201)

 

대표적인 상태 코드

  • 200번대 : 성공
    • 200 : 서버가 요청을 잘 처리했다 -> OK
    • 201 : 작성됨. 서버가 요청을 접수하고, 새 리소스를 작성했다.
  • 300번대 : 요청을 마치기 위해, 추가 조치가 필요하다.
    • 301 : 영구 이동, 요청한 페이지가 새 위치로 영구적으로 이동했다.
    • 302 : 임시 이동, 페이지가 현재 다른 위치에서 요청에 응답하고 있지만, 요청자는 향후 원래 위치를 계속 사용해야 한다.
      • def view(request):
        	# 내부적으로 resolve_url 사용
            # 인자로 지정된 문자열이 url reverse에 실패할 경우,
            # 그 문자열을 그대로 URL로 사용하여, redirect 시도
            return redirect('shop:item_list')
  • 400번대 : 클라이언트측 오류
    • 400 : 잘못된 요청 # 유효성 검사 실패
    • 401 : 권한 없음 # 유저가 인증이 되어지지 않았을 때
    • 403 (Forbidden): 필요한 권한을 가지고 있지 않아서, 요청을 거부 # 유저가 인증은 했으나, 권한이 없을 때
    • 404 : 서버에서 요청한 리소스를 찾을 수 없다.
      • def view(request):
        	try:
            	item = Item.objects.get(pk=100)
            except Item.DoesNotExist:
            	raise Http404​
                
                
        def view(request):
        	Item = get_object_or_404(Item, pk=100) # 내부에서 raise Http404
         
      • 일치하는 리소스가 0개일 때는 DoesNotExist 오류
      • 일치하는 리소스가 1개일 때는 정상 반환
      • 일치하는 리소스가 2개일 때는 Multifle 오류
    • 405 : 허용되지 않는 방법. POST 방식만을 지원하는 뷰에 GET 요청을 할 경우
  • 500번대 : 서버측 오류 # 뷰에서 요청 처리 중에, 뷰에서 미처 잡지못한 오류가 발생했을 경우
    • 500 : 서버 내부 오류 발생
반응형