본문 바로가기
개발/Django

[Django] RESTful API 정리

by char_lie 2023. 4. 24.
반응형

https://edder773.tistory.com/213

 

[Django] REST framework를 이용한 Rest API 사용해보기

https://edder773.tistory.com/212 [Django] OPEN API를 이용하여 값 출력해보기 https://edder773.tistory.com/88 [Django] 기초 무작정 시작하기 - Part 1 Django 기초부터 무작정 시작하기 Django를 하면서 처음 사용하는 것부

edder773.tistory.com

설정은 위 글을 바탕으로 진행


데이터의 request 메서드에 따른 요청 반환 구성하기
상태코드 개념

- 200 OK : 요청이 성공적으로 처리
- 201 Created: 새로운 데이터 생성 요청이 성공적으로 처리
- 204 No Content: 요청이 성공적으로 처리되었지만, 반환할 데이터가 없음
- 400 Bad Request: 서버 측 로직 오류 혹은 요청 파라미터 등 필요 요소를 잘못 넣어 서버가 해당 요청을 처리하지 못할 경우 반환
- 401 Unauthorized: 클라이언트가 인증되지 않은 사용자
- 403 Forbidden: 클라이언트의 인증여부와 관계없이 권한이 없음
- 404 Not Found: 요청한 리소스가 서버에 없음
- 500 Internal Server Error: 서버 정지 등 서버 측 에러 알림

이 포스팅에선 POST & GET 요청에 대한 응답 처리를 다뤄보자.

해당 응답 처리에 대한 status를 지정을 구성할 수 있다.

 

이 글에서는 응답을 확인하기 위해 POSTMAN을 사용해서 확인했다.


앞서 작성한 코드 파일에서 데이터를 생성하고 출력하는 형태를 만들어보자.

새로운 경로를 하나 지정해서 만들어주자.

from django.urls import path
from . import views

urlpatterns = [
    path('products/', views.products),
    path('products_list/', views.products_list)
]

이제 views에 데이터를 넣고, 볼 수 있게 구성해보자

@api_view(['GET', 'POST'])
def products_list(request):
    print(request)
    if request.method == 'GET':
        products_data = Products.objects.all()
        serializer = ProductsSerializer(products_data, many=True)
        return Response(serializer.data)
    elif request.method == 'POST':
        serializer = ProductsSerializer(data=request.data)
        if serializer.is_valid(raise_exception=True):
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.data, status=status.HTTP_400_BAD_REQUEST)

여기서 유효하지 않은 데이터에 대해 예외를 발생시키기 위해서 raise_exception 인자를 is_valid()에 사용할 수 있다.

이제 POSTMAN을 이용해서 데이터를 전송해 보자.

POST로 데이터를 입력하고, GET을 통해 확인하면

정상적으로 데이터가 들어갔음을 확인할 수 있다.

반응형

댓글