Автор оригинала: 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
Вы должны увидеть что-то похожее на это
Настройка проекта Виртуальная среда с использованием 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/
В вашем браузере
Если все прошло хорошо, вы должны увидеть «Поздравления! Ваша первая конечная точка работает» из браузера
Модели базы данных
Модель определяет логические структуры базы данных. Проще говоря, он определяет, как таблицы будут выглядеть в базе данных. Модели определяют, как записи могут быть манипулируются или извлечены в базе данных.
Мы создадим две модели для нашего проекта
- Модель пользователя и
- Модель 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
команда, проверить это
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
Импортируется из PythonFunctools
Отказ Мы устанавливаем состояние, которое проверяет, если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/пользователи/я
используя тот же токен, что и выше
- Получить все пользователи Get
API/V1/пользователи
используя тот же токен
И, наконец, удалить удалить API/V1/пользователи/я
ЗАКЛЮЧЕНИЕ
Мы накрыли довольно много о том, как создать простую спокойную API, у которого есть четыре основные Crud Операция с аутентификацией с помощью колбы. Мы узнали о настройке нашей среды Flask, создавая модели, создавая и применяющие миграции в дБ, группирующие ресурсы, используя плакат с помощью флэкса, подтверждающий подлинность пользователя, используя JWT Token, и мы также завершаем настройку всех конечных точек нашего пользователя Мы смогли настроить следующую конечную точку;
- Создать пользователя – пост
API/V1/пользователи
- Вход в систему – пост
API/V1/пользователи/вход
- Получить информацию о пользователе – Get
API/V1/пользователи/
- Получить все пользователи – получи
API/V1/пользователи
- Получить мою информацию – получи
API/V1/пользователи/я
- Отредактируйте мою информацию – поставьте
API/V1/пользователи/я
- Удалить мою учетную запись – Удалить
API/V1/пользователи/я
В части 2 этой серии мы завершим настройку конечных точек BlogPost. Нажмите здесь Чтобы оформить заказ проекта на Github.
Не стесняйтесь бросить свои вопросы, если есть, или бросить комментарий, я буду рад ответить на них.