Skip to content

Django DRF #

Find similar titles

3회 업데이트 됨.

Edit
  • 최초 작성자
  • 최근 업데이트
    hmkim

REST API #

HTTP #

  • 클라이언트와 서버 간의 요청과 응답을 위해 따르는 프로토콜

HTTP method #

  • 요청을 서버에게 알리기 위해 사용
    • POST: 데이터 입력
    • GET: 데이터를 받음
    • PUT: 데이터 업데이트
    • DELETE: 데이터 삭제

REST API #

  • REST란 어떤 자원에 대해 CRUD (Create, Read, Update, Delete) 연산을 수행하기 위해 URL로 요청을 보내는 것
  • 위와 같이 GET, POST, PUT, DELETE 메소드를 사용하여 요청을 보냄.
  • HTTP의 URL과 HTTP method를 기반으로 설계된 API를 REST API, RESTful API라 부름.

DRF #

DRF란 #

  • Django Rest Framework의 줄임말
  • Django 내에서 REST API 서버를 쉽게 구축할 수 있도록 돕는 오픈소스 라이브러리

DRF를 사용하는 이유 #

  • 웹 브라우저 API는 범용성이 큼. 개발을 쉽게 만들어 줌.
  • 인증 정책에 OAuth1, OAuth2를 위한 추가적인 패키지가 추가되어 있는 경우
  • Serializer 기능을 제공(DB data -> JSON)
  • 문서화 및 커뮤니티 지원이 잘 되어있음.

Serializer #

  • 복잡한 데이터를 파이썬 데이터 타입에 맞춰 변환 및 렌더링을 쉽게 해줌.
  • REST API를 제공하는 장고 애플리케이션은 API를 요청한 애플리케이션과 JSON 형식의 데이터를 주고받을 수 있어야 함.

ModelSerializer #

  • 장고가 form에 대응하는 ModelForm 클래스를 제공하는 것과 마찬가지로, DRF 또한 Serializer 클래스에 대응하는 ModelSerializer 클래스를 제공함.

동작 예시 #

url : /board/0/
method: get

일 때, 0번 게시판의 정보를 조회하기

DRF 동작 #

  • Modes.py

    class Board(models.Model):
        title = models.CharField(max_length=126, null=False)
        content = models.TextField(null=False)
    
  • Modelserilizer

    class BoardSerializer(serializers.ModelSerializer):
        class Meta:
        model=Board
            fields=('title', 'content')
    
  • urls.py

    path('board/<int:pk>', views.BoardDetailAPIView.as_view())
    
  • views.py

    class BoardDetailAPIView(GenericAPIView, DestroyModelMixin):
        model=Board
        def get(self, request, *args, **kwargs):
            board = self.get_object()
            return JsonResponse(BoardCommentSerializer(board).data,
                    status = status.HTTP_201_CREATED, safe=False)
    

참고 문헌 #

Suggested Pages #

0.0.1_20230725_7_v68