Django REST framework(DRF) - Article

윤동훈·2023년 4월 17일
1

DRF란?

  • Django REST framework 는 django에서 Restful API 서버를 쉽게 구축할 수 있도록 도와주는 오픈소스 라이브러리

  • Web API 구축을 위한 강력한 toolkit을 제공

  • DRF의 serializer는 django의 Form 및 ModelForm 클래스와 매우 유사하게 작동

[실습 사전 준비]

  • 가상환경 생성 및 실행
  • pip install
$ pip install django==3.2.18 djangorestframework django-seed psycopg2
  • 프로젝트 생성, articles 앱 생성, urls 등록

파일 경로 ==> settings.py

파일 경로 ==> myapi/urls.py

파일 경로 ==> articles/urls.py

  • view 임시 작성

  • Articles 모델 작성 및 migration

파일 경로 ==> articles/models.py

$ python manage.py makemigrations

$ python manage.py migrate
  1. django-seed 이용해 임의 데이터 생성
$ python manage.py seed articles --number 20

[ModelSerializer]

  • serializers.py 생성
  • ModelSerializer 작성

파일 경로 ==> articles/serializers.py

ModelSerializer

  • ModelSerializer 클래스는 모델 필드에 해당하는 필드가 있는 Serializer 클래스를 자동으로 만들 수 있는 shortcut을 제공
  1. Model 정보에 맞춰 자동으로 필드를 생성
  2. serializer에 대한 유효성 검사기를 자동으로 생성
  3. .create() 및 .update()의 간단한 기본 구현이 포함됨
  4. 단일 객체 인스턴스 대신 QuerySet 또는 객체 목록을 serialize하려면 many=True를 작성해야함(ex. serializer = ArticleListSerializer(articles,many=True) )

[Build RESTful API - Article]

GET - LIST

  • 게시글 데이터 목록 조회하기
  • DRF에서 api_view 데코레이터 작성은 필수

파일 경로 ==> articles/views.py

GET - DETAIL

  • 단일 게시글 데이터 조회하기
  • 각 데이터의 상세정보를 제공하는 ArticleSerializer 정의

파일 경로 ==> articles/serializers.py

파일 경로 ==> articles/urls.py

파일 경로 ==> articles/views.py

POST

  • 게시글 데이터 생성하기
  • 요청에 대한 데이터 생성이 성공했을 경우는 201 Created 상태 코드를 응답하고 실패 했을 경우는 400 Bad request를 응답

파일 경로 ==> articles/views.py

  • POSTMAN 결과 예시

Raising an exception on invalid data

  • 유효하지 않은 데이터에 대해 예외 발생시키기
  • is_valid()는 유효성 검사 오류가 있는 경우 ValidationError 예외를 발생시키는 선택적 raise-exception 인자를 사용할 수 있음
  • DRF에서 제공하는 기본 예외 처리기에 의해 자동으로 처리되며 기본적으로 HTTP 400 응답을 반환

파일 경로 ==> articles/views.py

DELETE

  • 게시글 데이터 삭제하기
  • 요청에 대한 데이터 삭제가 성공하였을 경우는 204 No Content 상태 코드 응답(명령을 수행했고 더 이상 제공할 정보가 없는 경우)

파일 경로 ==> articles/views.py

PUT

  • 게시글 데이터 수정하기
  • 요청에 대한 데이터 수정이 성공했을 경우는 200 OK 상태 코드 응답

파일 경로 ==> articles/views.py

1개의 댓글

comment-user-thumbnail
2023년 4월 23일

정리 야무쳐요 ㅎ.ㅎ!!

답글 달기