REST API сервис для выдачи списка документов. REST API сервис для выдачи списка документов. django rest api

REST API сервис для выдачи списка документов.

Open in new window

Установка пакета.

Официальная документация фреймворка REST

Для того чтобы подключить REST API к одной модели (таблице) необходимо произвести изменения в трех местах.

1. Сериализатор (app/serializer.py)

from rest_framework import serializers
from app.models import MainDocuments

class DocumentSerializer(serializers.ModelSerializer):
    class Meta:
        model = MainDocuments
        fields = ['title']

В сериализаторе мы определяем структуру выводимых данных json.

Привязываем модель и указываем список интересующих нас полей в модели.

Наша модель:

class MainDocuments(models.Model):
    uid = models.CharField(max_length=250)
    title = models.TextField(blank=True, null=True)
    href = models.CharField(max_length=250, blank=True, null=True)
    date = models.DateField(blank=True, null=True)
    is_error = models.BooleanField()
    is_file_downloaded = models.BooleanField()
    doc_html = models.TextField(blank=True, null=True)
    doc_txt = models.TextField(blank=True, null=True)
    is_document_downloaded = models.BooleanField()
    is_files_downloaded = models.BooleanField()

2. Вьюха (app/views.py)

from django.shortcuts import render
from rest_framework import viewsets
from app.models import MainDocuments
from app.serializer import DocumentSerializer

class DocumentViewSet(viewsets.ModelViewSet):
    queryset = MainDocuments.objects.all()
    serializer_class = DocumentSerializer

Определяем запрос к БД и привязываем класс серилизации.

Роутинг.

from django.contrib import admin
from django.urls import path, include
from rest_framework import routers
from app.views import DocumentViewSet

router = routers.DefaultRouter()
router.register(r'documents', DocumentViewSet)


urlpatterns = [
    path('api', include(router.urls)),
    path('admin/', admin.site.urls),
]

Пагинация (settings.py)

REST_FRAMEWORK = {
    'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination',
    'PAGE_SIZE': 10
}

Точка входа http://localhost:8000/api

django rest framework
django rest framework

Other topics