Django REST framework

isTuna·2021년 3월 22일
0

Django!

목록 보기
3/3
post-thumbnail

Django REST framework는 퓨어 Django를 사용해서 RESTful API를 만들기 쉽게 해주는 오픈소스 라이브러리다. 오늘은 DRF의 기본적인 것들을 알아보려고 합니다.

DRF?

먼저 DRF를 쓰면 좋은 점들을 알아야합니다. 공식 사이트에는 다음과 같은 장점들이 있다고 합니다.

  • Web browsable API는 개발자에게 아주 유용하다.
  • OAuth1과 OAuth2를 위한 인증 정책을 지원한다.
  • 대규모의 Documentation과 커뮤니티가 존재한다.
  • Serialzation은 ORM과 non-ORM을 데이터 소스 모두 지원한다.
  • 강력한 View도 존재하고 직접 View를 커스터마이징 가능하다.

이외에도, DRF를 사용하면 추가적인 장점들이 있습니다.

  • 협업할 때 코드를 찾기 좋다고합니다.
  • Code validation
  • 개발자가 디버깅하기 쉽게 만들어준다고 합니다.

Serializer

파이썬 형식의 코드를 다른 네트워크로 전송하기 위해서는 코드를 직렬화 해야한다고 합니다.
SerializerDRF에서 코드 직렬화를 담당하는 클래스라고 합니다.

SerialzierDjangoQueryset, Instance를 JSON이나 XML 같은 content type로 변환하기 쉬운 파이썬 datatype로 변환해줍니다.

Model Serializer

Model Serialzier도 존재합니다. 이것은 일반 Serializer에 몇 가지 기능이 더해진 것이라 합니다.

  • 기본 필드 집합들을 제공합니다.
  • 기본 validation 집합들을 제공합니다.
  • .create().update()가 제공됩니다.

Serializer + @ 지만 위의 기능들을 사용하지 않을 때는 기본 Serializer를 사용합니다.

Validation

위에서 계속 Validation을 언급했습니다. DRF에서는 데이터가 deserialize되면 그 데이터를 사용하기 전에 .is_valid()를 호출해야 합니다.

Validation은 두가지로 나뉘는데 Object level validationField level validation으로 나뉩니다.

Object level validation

class PostSerialzier(serializers.Serializer)

def validate(self, data):
	if data['title'] == data['description']:
    		raise serializers.ValidationError(" ~~~ ")
    	return data

Field level validation

class UserSerialzier(serializers.Serializer)

def validate(self, value):
	if len(value) > 30:
    		raise serializers.ValidationError("  ~~~  ")
   	return value

profile
청소연구소 개발자 (2021. 05~ )

0개의 댓글