Рубрики
Без рубрики

Создайте Rest API с помощью Python и Django – самый простой способ

Как вы можете создать Rest api с помощью Python

Автор оригинала: Ousseynou Diop.

В этом уроке мы преобразуем ваше приложение телефонной книги Django в Rest API

API REST определяет набор функций, с помощью которых разработчики могут выполнять запросы и получать ответы по протоколу HTTP, такие как GET, POST, PUT и DELETE

Подумайте о REST API как о веб-службе, предоставляющей вам данные, которые вы хотите использовать в своем приложении(мобильном или интерфейсном клиенте).

Ключевыми компонентами для запроса REST API являются:

GET — наиболее распространенный вариант, возвращает некоторые данные из API на основе данной конечной точки . POST — Создает новую запись и добавляет ее в базу данных. PUT — Обновление существующей записи. УДАЛИТЬ — Удаляет запись на данной конечной точке.

Приступая к работе

$ git clone https://github.com/xarala221/django-phonebook.git
$ cd django-phonebook

Настройка приложения

$ pipenv install
Creating a virtualenv for this project…
Using /usr/bin/python3.7m (3.7.5) to create virtualenv…
$ pipenv shell
Spawning environment shell (/usr/bin/zsh). Use 'exit' to leave.
. /home/username/.local/share/virtualenvs/phonebook_rest_api-9zIZds3o/bin/activate

Запустите приложение

(my-env) $ python manage.py runserver

Обратите внимание, что я использую pipe вместо pip, но вы можете использовать pip, если хотите, это зависит от вас.

Приложение работает по адресу http://localhost:800/

.
├── accounts
│   ├── admin.py
│   ├── apps.py
│   ├── forms.py
│   ├── __init__.py
│   ├── migrations
│   │   └── __init__.py
│   ├── models.py
│   ├── tests.py
│   ├── urls.py
│   └── views.py
├── contact
│   ├── admin.py
│   ├── apps.py
│   ├── __init__.py
│   ├── migrations
│   │   ├── 0001_initial.py
│   │   └── __init__.py
│   ├── models.py
│   ├── tests.py
│   ├── urls.py
│   └── views.py
├── db.sqlite3
├── manage.py
├── phonebook
│   ├── asgi.py
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── Pipfile
├── Pipfile.lock
├── README.md
├── requirements.txt
└── templates
   ├── accounts
   │   ├── login.html
   │   └── register.html
   ├── base.html
   ├── contact
   │   ├── contact_details.html
   │   ├── contact_list.html
   │   ├── delete_contact.html
   │   ├── new_contact.html
   │   └── update_contact.html
   ├── index.html
   └── partials
       └── _navbar.html

Это наша структура папок.

Настройка фреймворка Django REST

Django REST framework-это мощный и гибкий инструментарий для создания веб-API.

(myenv) $ pipenv install djangorestframework

В phonebook/settings.py добавить

# Application definition
INSTALLED_APPS = [
   'django.contrib.admin',
   'django.contrib.auth',
   'django.contrib.contenttypes',
   'django.contrib.sessions',
   'django.contrib.messages',
   'django.contrib.staticfiles',
   'rest_framework', # add this
   'contact',
]

Сериализация таблицы контактов(модель)

Давайте создадим новый файл … contact/serializers.py

# contact/serializers.py
from rest_framework import serializers
from .models import Contact


class ContactSerializer(serializers.ModelSerializer):
   class Meta:
       model = Contact
       fields = '__all__'

Подготовка данных

Создайте новый файл — contact/api.py

# contact/api.py
from rest_framework import viewsets
from .serializers import ContactSerializer
from .models import Contact


class ContactViewSet(viewsets.ModelViewSet):
   serializer_class = ContactSerializer
   queryset = Contact.objects.all()

Обновите свой contact/urls.py

from django.urls import path, include # add this
from rest_framework.routers import DefaultRouter  # add this
from .views import (
   index, contact_list,
   new_contact, contact_details,
   update_contact, delete_contact
)
from .api import ContactViewSet  # add this
router = DefaultRouter()  # add this
router.register(r'contacts', ContactViewSet,
               basename='contact')  # add this


urlpatterns = [
   path("api/", include(router.urls)),
   path("", index, name="home"),
   path("contacts/", contact_list, name="contacts"),
   path("contacts/new/", new_contact, name="new"),
   path("contacts//details/", contact_details, name="details"),
   path("contacts//update/", update_contact, name="update"),
   path("contacts//delete/", delete_contact, name="delete"),
]

Откройте браузер и перейдите в http://localhost:8000/api/Вы увидите что-то вроде этого:

HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
   "contacts": "http://localhost:8000/api/contacts/"
}

Нажмите на ссылку что вы видите ?

  • Вы должны увидеть список контактов, если они существуют в вашей базе данных.
  • Вы также можете создавать новые данные

Давайте завернем его

В этом уроке вы узнали, как создать REST API с помощью Django и Django Rest Framework. В следующем уроке я рассмотрю более сложную тему, такую как:

  • Аутентификация и авторизация
  • Сериализация вложенного объекта
  • Сериализация поля отношения
  • и т.д..

Увидимся в следующем уроке