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

Строительство apis reзов блога используя python и flask – часть 1

Быть программистом – это разработать тщательно управляемые отношения с ошибкой. Там нет общаться. Вы либо делаете свое доставство с ошибками, или работа станет невыносимой –…

Автор оригинала: Olawale Aladeusi.

Быть программистом – это разработать тщательно управляемые отношения с ошибкой. Там нет общаться. Вы либо делаете свои доставки с ошибками, или работа станет невыносимой – Эллен Уллман

В этой серии я собираюсь взять вас через очень легко изучить путь в создании RESTFLAY API, используя микро-каркас Python и Flask.

Давайте начнем с некоторых фоновых контекстов

Что такое спокойный API?

Reзов API (интерфейс прикладного программирования) – это подход, основанный на Отдых ( Re Презентация S Tatcheless T Ransfer) Технология. Остальное – это архитектурный стиль и подход к коммуникациям в разработке веб-сервисов, который определяет набор ограничений и свойств на основе HTTP-протоколов, которые включают Get, Post, Put и Delete. Я не собираюсь глубоко погрузиться в подробности о отдыхе в этой статье, но вы можете прочитать больше о REST здесь

Что такое питон?

Python Является ли язык программирования, который позволяет работать быстрее и более эффективно интегрировать свои системы.

Что такое колба?

Колбу это микро-каркас, написанные в Python. Это называется микро-каркасом, потому что он не требует каких-либо конкретных библиотек или инструментов.

Что мы построим?

Во-первых, решить проблему. Затем напишите код – Джон Джонсон

В этой серии мы собираемся разработать службу API-API в блоге, которая позволит всем четыре основным Crud ( C rete, r EAD, u pdate и d Elete) Операции. Услуга будет иметь следующие конечные точки (конечная точка – это шаблон URL, используемый для связи с API);

  • Пост /API/V1/пользователи – создайте пользователь (создать)
  • Получить /API/V1/Пользователи – Получите все зарегистрированные пользователи (прочитайте)
  • Получить /API/V1/пользователи/ – Получите пользователя (прочитать)
  • Получить /API/V1/Пользователи/ME – Получите мою информацию (прочитайте)
  • Поставить /API/V1/пользователи/ME – обновите мою учетную запись (обновление)
  • Удалить /API/V1/пользователи/ME – Удалите мою учетную запись (удалить)
  • Пост /API/V1/Блоги – Создать сообщение в блоге (создать)
  • Получить /API/V1/блоги – Получить все блог Post (прочитать)
  • Получить /API/V1/блоги/ – Получить один пост блога (прочитать)
  • Поставить /api/v1/блоги/ – Обновите пост блога (Обновление)
  • Удалить /api/v1/блоги/ – Удалить сообщение в блоге (удалить)

Предпосылки

Убедитесь, что у вас есть следующее, установленное в вашей системе

  • Python3.x – Мы будем использовать Python 3.xx для проекта службы блога
  • PostgreSQL – Мы будем использовать реляционную базу данных PostgreSQL для этого проекта
  • Пипенв – Мы будем использовать Pipenv для создания и управления виртуальной средой проекта и также для установки и удаления пакетов

Запустите следующие команды, чтобы проверить, установлено ли вы вышеупомянутое в вашей системе

$ python --version
$ which psql
$ pipenv --version

Вы должны увидеть что-то похожее на это

Снятый на экран 2018-06-17 на 10.02.33 AM.PNG

Настройка проекта Виртуальная среда с использованием Pipenv

Установить Пипенв Если у вас его еще не установлено в вашей системе, используя PIP или, если вы используете Mac System с помощью Brew

$ pip install pipenv

ИЛИ ЖЕ

$ brew install pipenv

Давайте создадим каталог нашего проекта и назовите его blog_api Откройте свой терминал и запустите следующую команду, чтобы создать каталог Blog_api

$ mkdir blog_api

Измените свой рабочий каталог в каталог, который вы только что создали выше и запустите команду Pipenv, чтобы настроить виртуальную среду проекта

$ cd blog_api
$ pipenv --three

Бег Пипенв - сразу Создаю виртуальную среду, если она еще не создана с помощью Python3 – Read Pipenv Documentation здесь Чтобы узнать больше о том, как это работает Примечание: мы будем использовать Python 3.xx в этом проекте Таким образом, вы можете спросить, почему нам нужна виртуальная среда в Python? Использование виртуальной среды для проектов Python позволяет нам иметь изолированную рабочую копию Python, которая дает нам возможность работать над конкретным проектом без беспокойства о влиянии других проектов.

Активируйте виртуальную среду проекта со следующей командой

$ pipenv shell

Установка зависимостей проекта

Ниже приведены требуемые пакетные зависимости, которые мы будем использовать для разработки нашего блога API

  • колбу – Flask – это микроразрушение для Python на основе Werkzeug, Jinja 2 и хороших намерений
  • колбу sqlalchemy – Флабная обертка для SQLALCHEMY, она добавляет поддержку SQLALCHEMY для колбных приложений
  • Psycopg2 – адаптер Python PostgreSQL, который предоставляет несколько команд для простых Crud Запросы и многое другое на PostgreSQL DB
  • Флэк-мигрировать – расширение колбы, которое обрабатывает миграцию базы данных SQLALCHEMY. Миграция в основном относится к управлению инкрементными, обратимыми изменениями в схемы реляционных баз данных.
  • Флэк-скрипт – Предоставляет расширение для управления внешними сценариями в колбе. Это необходимо в запуске наших миграций БД из командной строки
  • зефир – зефир – это библиотека для преобразования сложных типов данных в и из нативных данных Python. Проще говоря, используется для десериализации (преобразование данных в объект Application) и сериализация (преобразование объекта приложения на простые типы).
  • Flask-Bcrypt – Мы будем использовать это для хеша нашего пароля перед сохранением его в БД – конечно, вы не хотите сохранять пароль пользователя непосредственно в вашу БД, не перемешивая его
  • Pyjwt – Библиотека Python для кодирования и декодирования JSON Web Tookens – мы будем использовать этот токен в проверке подлинности пользователя

Запустите следующую команду для установки всех зависимостей;

$ pipenv install flask flask-sqlalchemy psycopg2 flask-migrate flask-script marshmallow flask-bcrypt pyjwt

В настоящее время ваш каталог проекта должен выглядеть так

blog_api/
  |-Pipfile
  |-Pipfile.lock

Pipfile содержит информацию о вашем приложении, включая все зависимости App Prod и Dev

Ваш Pipfile должен содержать следующее;

alt.

Структуры файлов

Создайте следующую структуру файла для вашего проекта Примечание: Не меняйте PipFile и Pipfile.lock, оставьте его как это

blog_api/
  |-src
    	|- __init__.py
        |- shared
            |- __init__.py
            |- Authentication.py
    	|- models
            |- __init__.py
            |- UserModel.py
            |- BlogpostModel.py
        |- views
            |- __init__.py
            |- UserView.py
            |- BlogpostView.py
        |- app.py
        |- config.py
    |- manage.py
    |- run.py
    |- Pipfile
    |- Pipfile.lock

Создать приложение DB.

Давайте создадим нашу БД и назовите его blog_api_db Вы можете использовать GUSEDB команда

$ createdb blog_api_db

Или создайте свою БД, используя любое PostgreSQL клиентское приложение E.g Постико , PGADMIN и т.п.

Конфигурация среды колбы

Теперь давайте настроим конфигурации, которые потребуются нашей заявке.

Добавьте следующее внутри /src/config.py.

alt.

Что мы сделали? Мы создали два класса Развитие – который содержит конфигурации среды разработки и Производство – который содержит конфиги по производству производственной среды. Для этого проекта я не хочу идти слишком сложным с этими конфигурациями, поэтому я указываю только отладки, тестирование, JWT_SECRET_KEY и SQLALCHEMY_DATABASE_URI. здесь Отказ Для нашей службы блога есть некоторые ценности, которые мы не хотим подвергаться воздействию внешнего мира, один из них Jwt_secret_key Что мы будем использовать позже, чтобы подписать токен пользователя. Это должно быть секретным ключом, и, как таковой, следует только известно нам - по этой причине и более эти секретные переменные необходимо установить в нашей системной среде. Вы заметите, что мы сделали Jwt_secret_key.getenv (‘jwt_secret_key’) В нашем файле конфигурации мы импортировали ОС и использовать его, чтобы получить Jwt_secret_key Значение из системной среды.

Запустите следующее из вашего терминала, чтобы установить переменные среды системы

$ export FLASK_ENV=development
$ export DATABASE_URL= postgres://name:password@houst:port/blog_api_db
$ export JWT_SECRET_KEY = hhgaghhgsdhdhdd

Примечание: изменить База данных_url Значение вашей базы данных URL, также изменить Jwt_secret_key Ценность к тому, что вы хотите использовать в качестве вашего секретного ключа, вам понадобится позже, чтобы подписать токен пользователя.

Создать приложение

Давайте создадим наше приложение с помощью образца API конечной точки, добавьте следующее в src/app.py файл

alt.

Что мы сделали? create_app Функция принимает в env_name (env_name – это имя среды, которое мы хотим запустить наше приложение для колба, это может быть тестирование, разработка или производство), это необходимо для загрузки нашей конфигурации окружающей среды. Не забывайте, что мы уже создали объект конфигурации окружающей среды в config.py src/config.py файл. create_app Возвращает новый объект приложения Flask. Мы также настраиваем простую конечную точку / с http Получить Способ, запрос на эту конечную точку вернется Поздравляю! Ваша первая конечная точка работает Отказ

Теперь, когда мы создали наше приложение, пусть создать точку входа для нашего приложения

Добавьте следующий код в /run.py Файл в корневом каталоге проекта. Создайте файл run.py в корневом каталоге проекта, если у вас его уже нет.

alt.

Что мы сделали? Здесь мы импортировали create_app () Функция от SRC/APP и позвоните в функцию, передавая наше имя окружающей среды (в данном случае «Development»). Не забывайте, что create_app () Функции Вернуть объект Flask, в этом случае мы называем приложение объекта. Прежде чем мы позвонили create_app () Функция, мы добавили условие, которое проверяет, если имя файла Python совпадает с главным именем файла, если они одинаковы, мы запускаем наше приложение, вызывая Flask Беги () Метод и если нет, мы ничего не делаем.

Теперь давайте запустим наше приложение

Мы можем достичь этого, запустив следующую команду из терминала

$ python run.py

Вы должны получить что-то похожее на ниже, если все прошло хорошо

 * Serving Flask app "src.app" (lazy loading)
 * Environment: development
 * Debug mode: on
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 300-081-843

Обратите внимание, что приложение работает на порту 5000, то есть номер порта по умолчанию из колбы. Вы можете изменить номер порта по умолчанию на все, что вы хотите, пройдя порт Параметр к Беги () Метод – в нашем коде Run.py просто измените app.run () к app.run (порт = ) Отказ

Теперь давайте посмотрим, работает ли наша конечная точка образца

Беги http://127.0.0.1:5000/ В вашем браузере

Выстрел на экране 2018-06-15 в 4,00.42 PM.PNG

Если все прошло хорошо, вы должны увидеть «Поздравления! Ваша первая конечная точка работает» из браузера

Модели базы данных

Модель определяет логические структуры базы данных. Проще говоря, он определяет, как таблицы будут выглядеть в базе данных. Модели определяют, как записи могут быть манипулируются или извлечены в базе данных.

Мы создадим две модели для нашего проекта

  • Модель пользователя и
  • Модель Blogpost

Урок наших моделей наследует Модель объект из Flask-Sqlalchemy Flask Sqlalchemy – это колба для SQLalchemy Отказ SQLalchemy – это ORM (Объект реляционного Mapper). ORM Является ли база данных SQL Abraction, которая позволяет легко выполнять операции SQL по реляционной базе данных. С ORM вместо написания RAW SQL-запросов (например, для извлечения всех строк из таблицы нашего пользователя) мы могли бы сделать что-то вроде – model.warery.all () Отказ

Добавьте следующее в SRC/Models/__ init__.py

#src/models/__init__.py

from flask_sqlalchemy import SQLAlchemy

# initialize our db
db = SQLAlchemy()

Что мы сделали? Здесь мы импортировали SQLALCHEMY из Flaks_SQLALChemy и инициализируем нашу БД

Далее, пусть позволяет создать модель пользователя и модель пользователя BlogPost, будет иметь следующие поля

* id
* name
* email
* password
* created_at
* modified_at

В то время как модель Blogpost будет иметь следующие поля

* id
* title
* contents
* owner_id
* created_at
* modified_at

Добавьте следующий код в SRC/Models/UserModel

alt.

Что мы сделали?

  • Мы импортировали экземпляр БД из SRC/Models/__ init__.py
  • Наш класс Usermodel унаследован от db.model.
  • Мы назвали наш стол Пользователи__tablename__
  • Мы определили столбцы таблицы пользователя и назначили правила каждому столбцу, мы назначили правило Privirl_key к ID , уникальное правило к Email поле, а установить не нулевое правило на Электронная почта, пароль и имя Эти поля являются обязательными.
  • Сохранить () Метод будет использоваться для сохранения пользователей к нашей БД
  • Обновление () Метод будет использоваться для обновления записи нашей пользователя на БД
  • Удалить () Метод будет использоваться для удаления записи из БД
  • Мы добавили три дополнительных статических метода get_all_users () , get_one_user () и get_user_by_email (v) – поскольку их имена изображены, чтобы получить все пользователю из БД и получить один пользователь из DB, используя поле Primary_key и поле Email
  • __repl __ () вернет печатное представление объекта USERMODEL, в этом случае мы возвращаем только идентификатор
  • __init __ () это конструктор класса, и мы использовали его, установили атрибуты класса

Еще одна вещь, чтобы добавить в модель нашей пользователя, нам нужно использовать пароль пользователя, прежде чем сохранить его в БД. Почему нам нужно использовать пароль пользователя? Поскольку мы не хотим сохранять пароль RAW пользователя к DB для причины безопасности. Это где мы будем использовать Flask-Bcrypt Модуль, который мы установили в Установка зависимостей проекта

Добавьте следующее в /src/models/__init__.py.py.

from flask_bcrypt import Bcrypt
#######
# existing code remains #
#######
bcrypt = Bcrypt()

Что мы сделали? Здесь мы импортируем BCRYPT от FLASK_BCRYPT и инициализировать его в этом SRC/модели/__ init__.py файл.

Далее нам нужно внести некоторые изменения в поле пароля в нашем USERMODEL

Добавьте следующее в SRC/Models/Usermodels.py

alt.

Что мы сделали? Мы внесли изменения в USERMODEL, чтобы разрешить перемешивание пароля пользователя,

  • Мы добавили два новых метода для Usermodel __genate_hash () и check_hash () мы будем использовать __genate_hash () Чтобы записать пароль пользователя перед сохранением его в БД в то время как check_hash () Будет использоваться позже в нашем коде для проверки пароля пользователя во время входа в систему. Заметил, что мы также устанавливаем Self.Password .__ Generate_Hash (Data.get («Пароль»)) В нашем классовом конструкторе это убедится, что мы генерируем хеш для паролей, прежде чем сохранить их в БД. Мы также добавили условие нашего Обновление () Метод, который проверяет пользователь, хочет обновить свой пароль и хеш, если да.

Теперь давайте создадим нашу модель Blogpost

Скопируйте следующее в SRC/модели/blogpostmodel.py

alt.

Что мы сделали?

  • Мы импортировали наш экземпляр БД из SRC/Models/__ init__.py
  • Наш класс BlogPostModel унаследован от db.model.
  • Мы назвали наш стол Blogposts__tablename__
  • Мы определили столбец нашего стола Blogpost и назначили правила каждому столбцу, мы назначили правило Privirl_key к ID и установить не нулевое правило на Название и содержимое Конечно, мы не хотим, чтобы эти поля были пустыми.
  • Сохранить () Метод будет использоваться для сохранения поста в блоге к вашей БД
  • Обновление () Метод будет использоваться для обновления записей в блоге в БД
  • Удалить () Метод будет использоваться для удаления записи из таблицы Blogpost на БД
  • Мы добавили два статического метода get_all_blogposts () и get_one_blogpost () , поскольку их имена изображены, чтобы получить все блогпозты и получить один блогпост из БД
  • __repl __ () В этом случае вернется печатное представление объекта BlogPostModel, в данном случае мы возвращаем только идентификатор
  • __init __ () это конструктор класса, и мы используем его настроить атрибуты класса

Теперь нам нужно определить отношения между нашими двумя столами Пользователи и Blogposts Таблица. У пользователей может быть много блогопоста, поэтому отношения между таблицей пользователя и таблицей BlogPosts будут один ко многим Отказ Нам также нужно определить схему нашей модели, вспомнили мы установили зефир от Установка проектных зависимостей Раздел, вот где мы будем использовать его.

Давайте обновим наш USERMODEL и BLOGPOSTMODEL, добавьте следующее

Usermodel.

alt.

Blogpostmodel.

alt.

Что мы сделали?

  • Мы добавили suder_id поле до Blogpostmodel И мы связали это на наших пользователей с инострудкой. Blogposts поле было добавлено к УММЕРМОДЕЛЬ При некоторых правилах, которые позволят нам получать все блогпости принадлежать пользователю при запросе USERMODEL.

Далее нам нужно обернуть дБ и BCRYPT с приложение Обновить /src/app.py со следующим кодом

alt.

Мы импортируем дБ и BCRYPT от SRC/модель и инициализировался

Миграции

Миграция базы данных относится к управлению инкрементными, обратимыми изменениями в схемы реляционных баз данных. Проще говоря, миграция – это способ обновления нашей БД с изменениями, которые мы сделали в наших моделях. Поскольку мы уже создали наши модели, теперь нам нужно перенести наши модели изменения в БД.

Добавьте следующий код в /manage.py.

alt.

Что мы сделали? Мы создали миграционный скрипт, который поможет в обслуживании наших миграций. Класс Manager отслеживает все команды и обрабатывает, как они называются из командной строки. Migratecommand содержит набор команд миграции, такие как init, мигрировать, обновление И т. Д. Мы будем использовать эти команды сейчас.

Далее давайте запустим инициализацию миграций с DB init команда

$ python manage.py db init

Вы должны увидеть следующее после запуска вышеуказанного скрипта

  Creating directory //blog_api/migrations ... done
  Creating directory //blog_api/migrations/versions ... done
  Generating //blog_api/migrations/script.py.mako ... done
  Generating //blog_api/migrations/env.py ... done
  Generating //python/blog_api/migrations/README ... done
  Generating //blog_api/migrations/alembic.ini ... done
  Please edit configuration/connection/logging settings in
  '//blog_api/migrations/alembic.ini' before proceeding.

Это создаст новую подпапку миграции в каталоге проекта

Теперь запустите этот скрипт, который заполнит наши файлы миграции и генерирует столы пользователей и блогами с нашей моделью

$ python manage.py db migrate
INFO  [alembic.runtime.migration] Context impl PostgresqlImpl.
INFO  [alembic.runtime.migration] Will assume transactional DDL.
INFO  [alembic.autogenerate.compare] Detected added table 'users'
INFO  [alembic.autogenerate.compare] Detected added table 'blogposts'
  Generating /Users/olawalequest/my_projects/python/blog_api/migrations/versions/e23b7256bd81_.py ... done

Далее примените изменения в БД, выполнив следующую команду

$ python manage.py db upgrade

Чтобы подтвердить, были ли таблицы созданы в БД, вы можете использовать PSQL команда, проверить это

Снятый на экран 2018-06-16 в 9.36.25 AM.PNG

User API

Наш пользователь API будет иметь все четыре операции CRUD, Мы начнем с создания Создать пользователя конечная точка. Когда пользователь создает учетную запись, мы хотим вернуться к пользователю Token JWT, который будет использоваться для любого запроса на аутентификацию. Давайте вернемся к нашему коду

alt.

Что мы сделали?

  • Мы импортировали Запрос – Это содержит всю информацию о запросе от пользователя, включая заголовки, тело и другую информацию, JSON – для сериализации вывода JSON, Ответ – Нам нужно это построить наш объект ответа и План – Нам нужно для группировки наших пользовательских ресурсов вместе от колбу Отказ
  • Мы создали приложение BluePrint, которое мы будем использовать для всех пользовательских ресурсов, и мы называем его user_api.
  • Мы создали Создать () с user_api.route () Оператор, с этим оператором мы определили наши создать Конечная точка как / и Пост тип запроса. Создать () будет принимать только Пост Запрос и вернул токен JWT, если запрос был успешным. Мы используем это Usermodel.get_user_by_email (data.get ('e-mail')) Чтобы проверить, если пользователь, предоставленный пользователем уже существует в нашей БД, если запрос возвращает пустой объект, это означает, что электронная почта не существует и будет идти вперед и сохранить пользователя в БД. Если пользователь существует, мы вернулись назад сообщение об ошибке, сообщив пользователям использовать другой адрес электронной почты. Вспомнили, что мы определили наши Email поле будет уникальным в Usermodel.
  • request.get_json () Чтобы получить объект JSON из тела запроса, мы используем это user_schema.load (req_data) Вайдате и десериализировать входные данные JSON от пользователя, вспомнили, что мы определили Userschema Класс в нашей модели Умеридер.
  • Мы также импортировали Auth от .shared.authenticentication мы используем Auth Чтобы генерировать токен пользователя, и он будет использоваться позже, чтобы декодировать токен пользователя.

Далее давайте определим Auth класс.

alt.

Что мы сделали?

  • Мы импортировали jwt.
  • Мы настроили Generate_token Статический метод, который занимает user_id И используйте это в нашей полезной нагрузке для генерации токена JWT. Мы также установили токен exp Дата будет 1 день после его создания. Мы Jwt_secret_key Уже установлено в нашей системной среде подписать токен с Hs256 алгоритм.
  • Мы используем decode_token () Статический метод для декодирования, поставляемый токен пользователя, используя то же самое Jwt_secret_key Мы использовали в подписании токена. Метод проверяет и проверяет токен, нам понадобится позже в нашем проекте.

Далее давайте создадим еще один маршрут, чтобы получить все пользователь в БД. Мы хотим сделать это таким образом, чтобы только зарегистрированный пользователь мог получить всех пользователей, что означает, что пользователь без токена авторизации не может получить доступ к этому маршруту. Пользователь может получить только токен, когда они создают учетную запись (это произойдет только один раз) и последующий логин на службу. Для достижения этого нам нужно создать Декоратор Давайте назовем это auth_requireed , нам также нужно настроить автолет входа в систему.

  • auth_requred декоратор Давайте вернемся и отредактируем нашу Аутентификация класс, чтобы включить auth_decorator.

alt.

Что мы сделали?

  • Мы добавили новый статический метод auth_requireed к Аутентификация класс, и мы завернули его, используя Wraps Импортируется из Python Functools Отказ Мы устанавливаем состояние, которое проверяет, если API-токен Существуют в заголовке запроса, пользователю нужно будет прикрепить токен, полученный из создания учетной записи, или тот, который из входа в систему. Если токен существует из заголовка запроса, мы передали метод токена Decode_Token, чтобы подтвердить подлинность токена , если токен действителен, мы получаем данные полезной нагрузки, которая является user_id и сохранить его на G , G Является ли глобальная переменная в колбе, которая действительна, пока мы не закончим обработку запроса. Мы будем использовать это позже, чтобы получить информацию о текущей пользовательской информации. Мы вернулись к пользователю сообщение об ошибке, если токен недействителен.

  • Войти конечная точка Мы должны настроить это здесь, чтобы пользователь мог получить токен

alt.

Что мы сделали?

  • Мы добавили новый метод Вход и назначен /Вход Маршрут по запросу Тип Пост к представлению пользователя. request.get_json () был использован для получения данных телового запроса, и мы передали его нашим user_schema.load (req_data,) Десериализовано и подтвердить содержание данных, мы прошли в частично = правда к нашей схеме, так как логин не требует Имя поле, которое требуется, если пользователь хочет создать учетную запись. Проверьте здесь Подробнее о том, как работает схема Mashmallow.
  • Мы используем Usermodel.get_user_by_email (data.get ('e-mail')) Чтобы отфильтровать таблицу пользователя с помощью адреса электронной почты пользователя и вернуть сообщение об ошибке, если пользователь не существует. Если пользователь существует в БД, мы добавили условие для проверки прилагаемого пароля с сохраненным пользователем Hash Pasword, используя user.Check_Hash (Data.get («Пароль»)) , вспомнил, что мы добавили check_hash () Метод нашему умиреду, когда мы создали его. Если пароль совпадает, то мы генерируем и возвращаем токен пользователю. Токен будет использоваться в любом последующем запросе.

Теперь давайте вернемся к созданию конечной точки, которая получит все данные пользователя на БД, и только пользователь с действительным токеном сможет получить доступ к этому маршруту.

alt.

Что мы сделали?

  • Настройте новый метод get_all с конечной точкой / и запрос метода Получить мы используем Usermodel.get_all_users () Чтобы запросить таблицу пользователя на БД и сохранил все данные пользователя. Мы также прикреплены @ Auth.auth_requireed Декоратор, чтобы подтвердить подлинность пользователя, делающего запрос.

Наконец, чтобы завершить наш пользователя API, пусть добавить Get – Получить , Обновление – Поставить и удалить – Удалить Одиночные пользовательские конечные точки Примечание. Пользователь может обновлять только и удалить свою учетную запись.

alt.

Что мы сделали?

  • Мы добавили еще четырех конечных точек, чтобы получить, обновить и удалить текущий пользователь и четвертый, чтобы получить информацию о пользователе через их идентификатор.

Наконец, давайте зарегистрироваться user_api Чертеж в приложение , как это в настоящее время, приложение не знает этого user_api План наступает. Чтобы зарегистрировать его, добавьте следующее в приложение

alt.

Что мы сделали? Мы импортировали user_api как user_blueprint от .views.euseview и зарегистрировал план, используя app.register_blueprint (user_blueprint,) с префиксом /API/V1/пользователи и название план.

ЗАПУСТИТЬ

Давайте запустим наш код до завершения этой части. Чтобы проверить конечную точку, которую вы можете использовать Почтальон или любое другое приложение

  • Создать пользовательский пост API/V1/пользователи

  • Войти Пост API/V1/пользователи/вход

  • Достань меня API/V1/пользователи/я Скопируйте JWT-токен Вернулся из входа в систему и поместите его в этот заголовок запроса API-токен как ключ

  • Отредактируйте меня поставить API/V1/пользователи/я используя тот же токен, что и выше

Выстрел на экране 2018-06-16 в 6.11.26 PM.PNG
  • Получить все пользователи Get API/V1/пользователи используя тот же токен
Снятый экран 2018-06-16 в 6.13.08 PM.PNG

И, наконец, удалить удалить API/V1/пользователи/я

Снятый экран 2018-06-16 в 6.16.26 PM.PNG

ЗАКЛЮЧЕНИЕ

Мы накрыли довольно много о том, как создать простую спокойную API, у которого есть четыре основные Crud Операция с аутентификацией с помощью колбы. Мы узнали о настройке нашей среды Flask, создавая модели, создавая и применяющие миграции в дБ, группирующие ресурсы, используя плакат с помощью флэкса, подтверждающий подлинность пользователя, используя JWT Token, и мы также завершаем настройку всех конечных точек нашего пользователя Мы смогли настроить следующую конечную точку;

  • Создать пользователя – пост API/V1/пользователи
  • Вход в систему – пост API/V1/пользователи/вход
  • Получить информацию о пользователе – Get API/V1/пользователи/
  • Получить все пользователи – получи API/V1/пользователи
  • Получить мою информацию – получи API/V1/пользователи/я
  • Отредактируйте мою информацию – поставьте API/V1/пользователи/я
  • Удалить мою учетную запись – Удалить API/V1/пользователи/я

В части 2 этой серии мы завершим настройку конечных точек BlogPost. Нажмите здесь Чтобы оформить заказ проекта на Github.

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