DRF(Django Rest Framework)

백승찬·2021년 1월 3일
0

django

목록 보기
11/11

RESTful이란

  • http의 url과 http method(GET, POST, PUT, DELETE)를 사용해서 API 가독성을 높인 구조화된 시스템 아키텍쳐

DRF를 사용하는 이유

  • 웹 브라우저 API는 범용성이 크다. 개발을 쉽게 만들어준다.

  • 인증 정책에 OAuth1, OAuth2 를 위한 추가적인 패키지가 추가되어 있는 경우

  • 시리얼라이즈 기능을 제공해준다. (DB data -> JSON)

  • 문서화 및 커뮤니티 지원이 잘 되어있다.

Serializer 란

Serializer란 말 그대로 직렬화하는 클래스로서, 사용자의 DB안에 사용자 프로필 사진, 이메일, 이름, 성별이 있다고 가정하면 사용자 모델 인스턴스를 JSON 형태 혹은 Dictionary 형태로 직렬화 할 수 있다.

user = User(email="user@user.user", name="user", sex="Female", profile_image="user.png")
UserSerializer(user).data{
	"email" : "user@user.user",
    "name" : "user",
    "sex" : "female",
    "profile_image" : "user.png"
}
  • DRF의 serializer를 통해 모델 인스턴스를 직렬화 할 수 있다.

실 사용시에는 만약 사용자 정보를 열람하는 URL이 /serializer/user/<user_id>/가 있고 해당 View에서는 user_id의 해당하는 모델 인스턴스의 정보를 리턴한다고 가정하자.

그렇게 되면 만약 우리가 /serializer/user/1/ 이라는 URL로 요청을 했을시에 user_id가 1인 사용자의 정보를 JSON형태로 응답받을수 있을것이다.

이는 사용자 프로필 페이지에 접근했을때 사용하는 View라고 하면 사용자 페이지의 들어갈때마다 해당하는 사용자의 user_id만 URL에 입력해주게되면 각 사용자의 정보를 JSON형태로 응답 받을 수 있을 것이다.

ModelSerializer

class UserSerializer(ModelSerializer):

    class Meta:

        model =	User

        fields = ("email", "name", "sex", "profile_image",)
  • DRF의 ModelSerializer를 사용해서 각 모델 인스턴스를 쉽게 직렬화 할 수 있게 된다. model_to_dict 필요없이!

  • 모델 저장시에 데이터가 유효한지 검사할 수 있어서, DB 정보 저장시에도 Serializer를 가장 많이 이용한다.

0개의 댓글