Створення RESTful API в Django за допомогою Django REST Framework
Django REST Framework (DRF) — це потужний і гнучкий інструментарій для створення веб-API. Він спрощує процес створення RESTful API, надаючи такі функції, як серіалізатори, набори переглядів і механізми автентифікації.
Налаштування Django REST Framework
Перш ніж ви зможете створити RESTful API, вам потрібно встановити Django REST Framework і додати його до свого проекту. Виконайте таку команду, щоб інсталювати DRF:
pip install djangorestframework
Потім додайте 'rest_framework' до INSTALLED_APPS
у вашому файлі settings.py
:
INSTALLED_APPS = [
...,
'rest_framework',
]
Створення простого API
Давайте створимо API для простої моделі під назвою Book
. Першим кроком є визначення моделі в models.py
:
from django.db import models
class Book(models.Model):
title = models.CharField(max_length=255)
author = models.CharField(max_length=255)
published_date = models.DateField()
isbn = models.CharField(max_length=13)
def __str__(self):
return self.title
Після визначення моделі запустіть міграції, щоб створити таблицю бази даних:
python manage.py makemigrations
python manage.py migrate
Створення серіалізатора
Серіалізатори в DRF перетворюють складні типи даних, як-от моделі Django, у JSON. Створіть серіалізатор для моделі Book
:
from rest_framework import serializers
from .models import Book
class BookSerializer(serializers.ModelSerializer):
class Meta:
model = Book
fields = '__all__'
Створення представлень і URL-адрес
DRF надає два основних способи створення переглядів API: перегляди на основі функцій і перегляди на основі класів. Тут ми використовуємо перегляди на основі класу з APIView
:
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status
from .models import Book
from .serializers import BookSerializer
class BookListCreateAPIView(APIView):
def get(self, request):
books = Book.objects.all()
serializer = BookSerializer(books, many=True)
return Response(serializer.data)
def post(self, request):
serializer = BookSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Далі налаштуйте URL-адреси для цього перегляду в urls.py
:
from django.urls import path
from .views import BookListCreateAPIView
urlpatterns = [
path('books/', BookListCreateAPIView.as_view(), name='book-list-create'),
]
Тестування API
Коли сервер працює, ви можете перевірити API на http://127.0.0.1:8000/books/
за допомогою таких інструментів, як Postman або curl. Запит GET отримує всі книги, а запит POST дозволяє створити нову книгу.
Покращення API за допомогою ViewSets
Щоб отримати більш стислий і багаторазовий код, ви можете використовувати ViewSet
і Router
DRF. Ось як оновити API для використання ModelViewSet
:
from rest_framework.viewsets import ModelViewSet
from .models import Book
from .serializers import BookSerializer
class BookViewSet(ModelViewSet):
queryset = Book.objects.all()
serializer_class = BookSerializer
Потім налаштуйте маршрутизатор у urls.py
:
from rest_framework.routers import DefaultRouter
from .views import BookViewSet
router = DefaultRouter()
router.register(r'books', BookViewSet, basename='book')
urlpatterns = router.urls
Висновок
Django REST Framework дозволяє легко створювати надійні та гнучкі RESTful API. Використовуючи серіалізатори, перегляди та маршрутизатори, ви можете створювати API, які легко обробляють складні моделі даних. Завдяки цій основі ви тепер можете досліджувати такі розширені функції, як спеціальні дозволи, розбивка на сторінки та автентифікація в DRF.