REST는 Representational State Transfer의 약자
HTTP URI를 통해 자원을 명시하고, HTTP Method를 통해 해당 자원에 대한 CRUD 연산을 적용하는 것.
Django REST framework 설치
pip install djangorestframework
pip가 안되는 관계로
pip3 install djangorestframework
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'main',
'rest_framework',
]
main 디렉토리안에 serilaizers.py 생성
from rest_framework import serializers
from main.models import [models.py의 클래스 임포트]
class [클래스이름]Serializer (serializers.ModelSerializer):
class Meta:
model = [클래스 모델 이름]
fields = '__all__'
main 디렉토리안에 view.py 생성
from rest_framework import viewsets
from main.models import [클래스 모델]
from .serializers import [serializers.py에 생성한 시리얼라이저 클래스]
class [모델이름]ViewSet(viewsets.ModelViewSet):
queryset = [모델이름].objects.all()
serializer_class = [시리얼라이저 이름]
queryset = [모델이름].objects.all() <- 모든 데이터가 쿼리셋으로 출력
queryset = [모델이름].objects.raw([sql 쿼리])의 형식으로 원하는 쿼리 입력이 가능하다.
from rest_framework import routers
from main.views import [클래스 뷰셋]
router = routers.DefaultRouter()
router.register(r'[모델 클래스 이름]', [클래스 뷰셋])
urlpatterns = [
path('admin/', admin.site.urls),
path('api/', include(router.urls)),
re_path(r'^.*$', TemplateView.as_view(template_name='index.html'), name='index')
]
urlpatterns에 path('api/', include(router.urls)),
부분 추가
getData() {
const URL = "http://[호스트IP]/[라우터에 설정한 url]/[모델 클래스이름]/";
axios.get(URL).then((res) => {
console.log(res.data);
});
},