실제 데이터를 삭제 할 수 는 있지만 삭제시키기 보다는 유저의 권한을 정지 시키는게 좋다. 특히 RDBS 에서는 테이블 간의 데이터가 연결되어 있는 경우가 많아 오류를 유발 할 수도 있다. 또한 데이터를 삭제 하는 것 보다는 유지하는 것 이 마케팅 등에 활용 할 수 있어 좋다.
REST API 에서 REST는 Representational State Transfer 의 약자로 소프트 웨어 프로그램 아키텍처의 한 형식입니다. HTTP URI 를 통해 자원을 명시하고, HTTP method (GET,POST,PUT,DELETE)를 통해 해당 자원에 대한 CRUD OPERATION을 적용하는 것을 의미합니다.
RESTful 이라는 말은 REST 라는 아키텍처 개념을 그대로적용해서 웹서버 구성하고 웹서비를 하는 것을 말합니다.
Serailizer 직렬화 를 통해 복잡한 데이터를 JSOn,XML등의 컨텐트 타입으로 쉽게 변환 가능한 python 데이터 타입으로 변환시켜준다.
ORM 과 non-ORM을 모두 지원한다.
많은 기업에서 사용해서 정보를 얻기 쉽다.
인증 관리를 위해 OAuth1a와 OAuth2 가 내장되어 있다.
Django 만 사용하는 경우 Queryset을 템플릿 언어로 렌더링한다.
DRF를 사용하면 json을 템플릿 언어로 렌더링한다.
이렇게 DRF를 사용하면 python으로 만든 백엔드를 다른 프론트엔드 에서도 사용이 가능합니다.
Djnago User모델에는 유저네임,이름,이메일,패스워드 의 기본적인 필드가 존재합니다.
하지만 실제 서비스에서는 더 많은 User의 정보를 필요로 합니다. 생일이라던지, 여러가지 질문을 포함할 수 도있습니다. 그렇기 위해 Custom User을 통해 커스텀 합니다. 또한 Django User모델은 username 으로 로그인을 해야 합니다.
Serializer는 queryset과 모델 인스턴스와 같이 복잡한 데이터를 JSON, XML 또는 다른 콘텐츠 유형으로 변환할 수 있고,
Serializer는 받은 데이터의 유효성 검사를 진행한 뒤 복잡한 타입으로의 형 변환을 할 수 있도록 Serialization을 제공합니다.
json 은 특정 언어의 종속 되지 않습니다.
xml 보다 가볍기 때문에 최소한의 용량으로 데이터 전송이 가능합니다.
xml 보다 구조정의의 용이성 과 가독성이 좋습니다.
Serializer MethodField를 사용하면 됩니다.
만약 post 라는 모델을 역참조 하려면 post_set을 통해서 역참조 를 할 수 있습니다. 혹 relate_name 을 모델에 선언해줬다면 realte_name을 통해 참조 할 수 있습니다.
데이터를 조회 할때 and , or , not 연산을 사용 할 수 있습니다.
복잡한 데이터를 조회할 때 유용하게 쓰일 수 있습니다.