Создание 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.

Не забудьте оставить комментарий и выразить признательность, нажав кнопку хлопка 😉.