Создание API с помощью Python-Django похоже на abc… Существует много абстракций, хотя фреймворк призван ускорить разработку. В этой статье я помогу вам создать ресурс RESTful API для «книг».
Давайте погрузимся…
Необходимое условие
- Чтобы приступить к работе, вам необходимо иметь базовое представление о программировании и о том, что такое RESTful API.
- Вам понадобятся базовые знания Python.
- Знание баз данных будет преимуществом.
- Вам также необходимо установить Python на свой компьютер.
Тогда давайте начнем… 😉. Я бы использовал машину с Windows и делал ссылки на ее основе.
Шаг 1: Настройка проекта
- Откройте командную строку от имени администратора.
- Нажмите на меню «Пуск».
- Введите 'cmd'.
- Щелкните правой кнопкой мыши значок cmd.
- Выберите опцию «Запуск от имени администратора».
- Выберите «Да» в появившемся диалоговом окне, чтобы разрешить администратору вносить изменения в ваш компьютер.
- В командной строке введите
cd /
, чтобы перейти в корень системного каталога. Обратите внимание на пространство между ними. - Затем создайте каталог с помощью следующей команды
mkdir books_api
. Эта команда создает каталог с именемbooks_api
. - Перейдите в этот новый каталог, чтобы начать создание проекта Django, введя команду
cd books_api
. - Убедитесь, что ваш python установлен, выполнив команду
python --version
, чтобы отобразить установленную версию python. Я использую самую последнюю версию Python на момент написания этой статьи — версию 3.8.1.
Мы будем запускать наш проект в виртуальной среде. Для этого мы будем использовать
pipenv
. Поэтому убедитесь, что у вас установлен pipenv, запустив проверку версии с помощью следующей командыpipenv --version
. Если это не удается, установите pipenv с помощью следующей командыpip3 install pipenv
.
- Затем активируйте виртуальную среду, запустив
pipenv shell
Наконец, установите django и django-restframework и создайте проект bookapi django.
- Чтобы установить зависимости нашего проекта в виртуальной среде, мы будем использовать команду
pipenv
:pipenv install django djangorestframework
. Это создаст Pipfile и Pipfile.lock, в которых хранятся записи о наших зависимостях. - Наконец, мы создаем проект Django:
django-admin startproject bookapi
. Это скроет наш проект. Вы заметите новый каталогbookapi
в каталоге book_api.
Шаг 2: Настройка приложения
В Django проект рассматривается как целое приложение, в то время как приложение является модулем в проекте. Другими словами, мы будем создавать books app
для этого проекта.
- Перейдите в каталог проекта, выполнив команду
cd bookapi
Здесь мы находимся в корне, содержащем
manage.py
: скрипт, который позволяет вам запускать административные задачи, как мы скоро увидим.
- Чтобы создать наше книжное приложение, запустите:
python manage.py startapp books
. Эта команда скроет наше новое приложение в проекте bookapi.
Чтобы не забыть, нам нужно зарегистрировать установленные приложения в
bookapi/bookapi/settings.py
- Добавьте
'rest_framework', 'books'
в список INSTALLED_APPS.
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'rest_framework', 'books', ]
Шаг 3: Создайте модель книги
Откройте каталог book_api в предпочитаемом вами редакторе кода.
Перейдите к bookapi/books/models.py
и измените, чтобы он содержал:
from django.db import models # Create your models here. class Book(models.Model): title = models.CharField(max_length=100) publisher = models.CharField(max_length=100) authors = models.CharField(max_length=256) year = models.CharField(max_length=4) created_at = models.DateTimeField(auto_now_add=True)
Здесь мы определяем структуру того, как книги должны храниться в нашей базе данных.
Шаг 4. Запустите миграцию
Миграции в основном хранят записи об изменениях, которые мы вносим в структуру нашей базы данных, чтобы их можно было легко применить повторно. Чтобы сгенерировать сценарий миграции, выполните:
python manage.py makemigrations books
Затем нам нужно применить эти миграции, чтобы таблицы можно было создать в нашей базе данных. Бегать
python manage.py migrate
Теперь у нас есть настройка нашего приложения и работающая база данных. Обратите внимание, что в Django по умолчанию используется sqlite. Я использую значение по умолчанию, чтобы сделать эту статью максимально легкой и легкой для понимания.
Шаг 5. Настройка API книжных ресурсов
Чтобы создать наш ресурс книг, мы должны настроить наш сериализатор, который преобразует наборы запросов и объекты Django в json.
Итак, давайте приступим к делу… 💪
В нашем приложении для книг создайте папку api (bookapi/books/api/
) и внутри этой папки создайте файл serializers.py. Добавьте следующий фрагмент в этот файл.
from rest_framework import serializers from books.models import Book class BookSerializer(serializers.ModelSerializer): class Meta: model = Book fields = ("__all__")
В приведенном выше фрагменте мы устанавливаем модель для сериализации в модель Book, которую мы создали ранее, и, наконец, устанавливаем возвращаемые поля для всех полей, которые есть в модели.
Затем мы создаем наборы представлений для ресурса, который действует как контроллер в архитектуре MVC. Как я упоминал ранее, Django очень абстрагирован. С помощью нескольких строк кода мы можем настроить функциональность CRUD для ресурса.
Давайте к этому… 🎺
Затем мы создаем viewesets.py в каталоге bookapi/books/api/
. Добавьте в него следующий фрагмент кода.
from rest_framework import viewsets from .serializers import BookSerializer from books.models import Book class BookViewSets(viewsets.ModelViewSet): queryset = Book.objects.all() serializer_class = BookSerializer
Теперь сосредоточимся на том, как сделать контроллер доступным через маршруты. Мы создадим файл router.py
в каталоге bookapi/bookapi/
. Введите фрагмент кода в созданный файл router.py
.
from rest_framework import routers from books.api.viewsets import BookViewSets router = routers.DefaultRouter(trailing_slash=False) router.register('books', BookViewSets)
Наши API почти готовы к публикации. Всего один последний шаг, чтобы закончить все это. Добавьте созданный маршрутизатор в bookapi/bookapi/urls.py
from django.contrib import admin from django.urls import path, include from .router import router urlpatterns = [ path('admin/', admin.site.urls), path('api/', include(router.urls)), ]
Ура!!! ✨ ✨ ✨
Теперь время расплаты... Чтобы протестировать приложение, запустите приложение из виртуальной среды с помощью следующей команды cli:
python manage.py runserver
При этом у нас есть следующие маршруты
POST http://localhost:8000/api/books GET http://localhost:8000/api/books GET http://localhost:8000/api/book/:id DELETE http://localhost:8000/api/book/:id PATCH http://localhost:8000/api/book/:id
Фреймворк Django rest поставляется с интерактивным интерфейсом для созданного API. Чтобы получить к нему доступ, просто перейдите к localhost:8000/books
. Там вы можете протестировать все конечные точки.
Я надеюсь, что это помогло пролить свет на то, как создаются API с помощью Python и Django.
Не забудьте оставить комментарий и выразить признательность, нажав кнопку хлопка 😉.