Django REST Framework - TIL

심준보·2023년 11월 7일
post-thumbnail

# django를 공부하던 중 , rest API 를 적용해봐야겠다는 필요성을 느끼고 , DRF 학습을 시작

목차

  1. django 및 drf 환경 설정
  1. 간단한 연습 api 구축
  1. 도서 정보 get,post api 구축 - fbv
  1. 도서 정보 get,post api 구축 - cbv

#1. django 및 drf 환경 설정

  1. Django 설치
  • 가상환경 구축
python -m venv venvdrf

cd venvdrf
cd Script
activate

cd ..
cd ..
  • dajngo 설치 및 프로젝트 구축
pip install django==3.2.10
django-admin startproject mydrf .
  • DRF 설치 및 settings.py 설정
pip install djangorestframework==3.13.1

-settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    #drf 적용으로 인한 추가
    'rest_framework',
    
    ]
  • 앱 구축 및 settings.py설정
python manage.py startapp exampledrf

-settings.py


INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    #drf 적용으로 인한 추가
    'rest_framework',
    #새로운 앱 등록으로 인해 추가
    'exampledrf'
]

-마이그레이션 진행

python manage.py makemigrations
.
python manage.py migrate

#2. 간단한 연습 api 구축

-exampledrf/views.py

# django.shortcuts , render는 django의 기본이므로// 지운다
# from django.shortcuts import render

# Create your views here.

from rest_framework import viewsets , permissions , generics, status
from rest_framework.response import Response
from rest_framework.views import APIView
from rest_framework.decorators import api_view

from rest_framework.generics import get_object_or_404
from .models import Book
from .serializers import BookSerializer


# 데코레이터 - @api_view사용 
# 함수의 성격을 지정해준다 - ex) get,post.etc..

# 기본 GET api 

@api_view(['GET'])
def HelloAPI(request):
  return Response("hello world!")

@api_view() - 데코레이터 // get ,post 등 쓰임을 지정해준다 - fbv형식에서

-mydrf/urls.py

from django.contrib import admin
from django.urls import path,include

urlpatterns = [
    path('admin/', admin.site.urls),
    path("exampledrf/", include("exampledrf.urls"))
]

여기서 , include로 exampledrf 뒤에 오는 것은 example폴더에 있는 urls의 규칙을 따르도록

-exampledrf/urls.py

from django.urls import path,include
from .views import HelloAPI 

urlpatterns = [
  path("hello/",HelloAPI),

]

exampledrf/hello/ 가 올 경우 HelloAPI함수가 호출되도록 정의

-Hello Api .img

  • 위에 나오는 데이터들은 , HTTP의 헤더이다.
  • HTTP는 웹의 프론트엔드와 백엔드 간의 요청/응답을 위한 프로토콜이다
  • 통신을 위해, 동일한 규격이 필요


DRF Serializer

  • 파이썬은 데이터를 읽을 수 있는 문자열로 변환시켜야 한다.
  • 파이썬 데이터 객체 -> 문자열 // 직렬화
  • 문자열 -> 파이썬 데이터 객체 // 역직렬화

그 전까지는 , 단순하 hellopi

지금부터는 book ,books api 구축




11/27 - 11/28

# . 회원 인증 개념 및 회원가입 API

회원 인증 개념 이해 및 회원가입 구현

  • django rest framework에서 지원해주는 기능을 사용하여 회원가입을 구현
  • 기존 django만을 사용했을때는 , 직접 아이디 중복 확인 절차부터 저장까지 모든 것을 구현했다면, drf를 사용하고 나서는 아이디중복 절차 부터 비밀번호 암호화까지 보다 쉽게 구현이 가능해졌다.
  • 회원가입 API 화면

  • 토큰 발행 확인 - admin 화면

    • 개개인에 맞는 토큰이 발행되어 있는 것을 확인할 수 있다.
      • 이것은 , 기본 토큰이고 , 시간마다 토큰이 재발급 될 수 있게 커스터마이징도 가능하다고 한다.
    • 재발급되야 되는 이유는 , 토큰자체가 시간당 변동성이 없을 경우 보안상 위험이 올라가기 때문이다.

profile
밑거름이라고생각합니다

0개의 댓글