Недавно я начал изучать Fastapi и сравнив его с моим доверительным основанием выбора ( Express ), и я думаю, что на самом деле понравится его простая природа. Fastapi определяет себя как «Современные, быстрые (высокопроизводительные), веб-каркас для строительства API с Python» Отказ В этой статье я постараюсь поднять вас и бежать с Fastapi, создавая простую пиццу API!
Установка
Вы можете установить Fastapi, запустив следующую команду,
pip install fastapi
Сервер
Вы можете использовать UVicorn или Hypercorn для сервера, оба великолепны и делают то же самое. Я буду использовать UVicorn для этого руководства. Вы можете установить их, запустив следующую команду,
pip install uvicorn
Или,
pip install hypercorn
Это все, что нам нужно для этого учебника, давайте доберемся до забавной части!
Начиная
Перед созданием маршрутов Pizza давайте сначаем создам простой базовый маршрут, который возвращает простой ответ JSON. Создайте каталог для вашего проекта и создать main.py
файл. Ваш код должен выглядеть что-то вроде этого (не стесняйтесь менять имя вашего ступица Pizza!).
# main.py # Import FastAPI from fastapi import FastAPI # Initialize the app app = FastAPI() # GET operation at route '/' @app.get('/') async def index(): return {"greeting" : "Welcome to Paul's Pizza!"}
Запуск живого сервера
Вы можете запустить живой сервер с UVICORN, используя следующую команду,
uvicorn main:app --reload
Обратите внимание, что в коде «главное» относится к имени файла и «приложение» – это имя экземпляра fastapi, который мы создали ранее. Если вы сейчас посетите localhost: 8000
Из вашего браузера вы увидите следующий ответ JSON,
Вещи, чтобы отметить
Обратите внимание, что в коде
@ app.get ("/")
Рассказывает fastapi, что функция ниже отвечает за обработку запросов, которые переходят,- Путь
/
- используя
Получить
HTTP-метод. Точно так же вы можете использовать другие способы HTTP, такие какпоставить
,пост
илиУдалить
Отказ
- Путь
Fastapi генерирует автоматическую документацию API, используя чванство. Вы можете посетить документы, посетив
localhost: 8000/Документы
. Вы также можете проверить конечные точки API отсюда, насколько аккуратно! На данный момент ваши документы API должны выглядеть только с только «/» маршрутом,Еще одна вещь, которую нужно заметить, Fastapi автоматически преобразует диктографии Python, списки или другие примитивные типы или Pydantic Модели для подходящего формата JSON, не нужно делать это самостоятельно!
Достаточно с основами, давайте создадим нашу пиццу API сейчас!
Создание API Pizza
Давайте теперь создадим простой API, где у нас есть список пиццы с разными свойствами, скажем, /Пицца
И мы можем получить и добавить больше пиццы в список.
Настройка
Теперь мы могли бы подключиться к любой базе данных, которую мы хотим, но ради простоты давайте имеем список памяти, которые мы получаем и изменяем. Создать новую переменную дБ
и инициализируйте его со следующими данными пиццы,
# main.py #... db = [ { 'id': 0, 'name': 'Neapolitan Pizza', 'toppings': ['Mozzarella cheese', 'Tomatoes', 'Basil'] }, { 'id': 1, 'name': 'Chicago/Deep-Dish Pizza', 'toppings': ['Cheese', 'Tomatoes', 'pepperoni', 'Onions', 'Mushrooms'] }, ] #...
Получить все пиццы
Для Получить
Запрос на /Пицца
Мы можем просто вернуть дБ
Список мы создали ранее, которое содержит все пиццы.
# main.py # ... # get all pizzas @app.get('/pizzas') async def index(): return db # ...
Теперь, если мы посетим localhost: 8000/пицца
Мы получаем список пицц, которые мы создали ранее,
Аккуратный! Вы также можете увидеть маршрут на документах ( localhost: 8000/Документы
).
Получение одной пиццы
Давайте создадим маршрут для localhost: 8000/pizzasas/
который вернет детали пиццы для пиццы с указанным я бы. Это где мы будем использовать параметры пути!
# main.py # ... # get a pizza by id @app.get('/pizzas/{pizza_id}') async def get_pizzas(pizza_id): for pizza in db: if(pizza['id'] == int(pizza_id)): return pizza return {"error": "Pizza not found with id: " + pizza_id} # ...
Главное отметить здесь, что значение параметра PATH Pizza_id
будет передан вашу функцию в качестве аргумента Pizza_id
Затем используется здесь, чтобы вернуть объект Pizza с данным идентификатором. Итак, если вы сейчас отправитесь на localhost: 8000/pizzass/0
, вы увидите такое ответ,
Здорово! Но 2 типа пиццы недостаточно. Посмотрим, как мы можем создать пост-маршрут, чтобы добавить больше пиццы в наш список!
Добавление новой пиццы
Давайте создадим пост
проводить маршрут /Пицца
Для добавления новых пицц в наш список. Для этого нам сначала необходимо определить модель данных нашего запроса, то есть данные, которые мы должны получать по запросу. Наша модель данных здесь очень проста. У нас есть имя нашей пиццы, которая является строкой и списком начин. Мы создадим новый идентификатор для пиццы динамически. Мы определяем модель данных, наследующую Базомодель
класс от Pydantic
С
# main.py #... from pydantic import BaseModel from typing import List # pizza model class Pizza(BaseModel): name: str toppings: List[str] #...
Теперь мы можем использовать этот класс Pizza в качестве типа для нашего запроса. Вот как мы собираемся создать метод пост,
# main.py #... @app.post('/pizzas') async def post_pizza(pizza: Pizza): # convert to dictionary new_pizza = pizza.dict() # add a new id new_pizza['id'] = db[-1]['id'] + 1 # add to list print(new_pizza) db.append(new_pizza) return new_pizza #...
Вы можете проверить этот пост маршрутом напрямую из наших документов API в localhost: 8000/Документы
нажав на Попробуйте это
Кнопка под пост-маршрутом мы только что создали и передавая тело запроса, Если мы выполним этот запрос и посетите localhost: 800/пицца
, мы увидим, что наша новая пицца была добавлена в список, и идентификатор также генерируется!
Окончательные слова
Прекрасная работа! Вы создали простой API, который принимает получение и публиковать запросы с таким небольшим количеством кода. Если вам нравится то, что вы видите и хотите исследовать Fastapi больше, я предлагаю пройти через Руководство пользователя Fastapi Для более глубокого взгляда на самые важные функции. Для стартера попробуйте добавить положить и удалить маршрут для пиццы!
Если вы хотите пообщаться со мной о чем-либо технологии или просто скажите привет, вы можете Связь со мной на linkedin или Найди меня в Twitter Отказ Мои DMS открыты!
Я покидаю полный файл, который мы работали здесь, если вы хотите обратиться к нему, ура!
Оригинал: “https://dev.to/supanthapaul/getting-started-with-fastapi-create-apis-quickly-using-python-2a9f”