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

5 причин принять Fastapi для создания веб-сервисов для отдыха

Распространенным способом развертывания моделей наших машин изучает их через API Web Service … Помечено Python, машинное обучение.

Распространенным способом развертывания наших моделей обучения машины подвергается их через API Web Service. И поскольку наш фокус не создает веб-инструменты, мы предпочитаем принять хорошо проверенные, готовые к использованию рамки для сокращения нашего времени на рынок.

При выборе рамки мы хотим получить правильный баланс между производительностью и производительностью. Обычно как инструмент более конкретный и ближе к голым металлу, он будет работать лучше. Тем не менее, низкоуровневые библиотеки оставляют большую часть работы для нас. С другой стороны, если рамка обеспечивает слишком много абстракции, она может ухудшить производительность.

Эта статья кратко обсуждает пять причин принять Fastapi в качестве основы для нашей API для отдыха и почему он предлагает выдающийся баланс между производительностью и производительностью.

1. Высокая производительность

Fastapi – один из самых быстрых доступных доступов Python Frameworks, и его производительность сопоставима с NODEJS и GO RACKS, в соответствии с Techempower Preammark.

2. Декларативная маршрутизация

Создание маршрутов и конечных точек с помощью Fastapi очень проста. Мы включаем декоратор вокруг метода, и он будет служить на пути, указанном в аргументе декоратора:

@app.post("/diabetes:predict")
def predict(p):
    return __predict_batch([p])[0]

Чтобы получить параметр PATH, нам нужно объявить имя параметра пути в шаблоне пути, а затем объявить параметр метода, используя то же имя:

@app.get("/patients/{patient_id}")
def get_patient(patient_id):
    pass

Любой другой параметр, объявленный в подписи метода, обрабатывается в качестве параметра запроса. Если метод набирает параметры, Fastapi автоматически преобразует параметры строки запроса в правильный тип. В приведенном ниже примере конечная точка поддерживает параметры «размер» и «страница», чтобы рамка автоматически преобразовала параметры запроса в свой правильный тип:

@app.get("/patients")
def get_patient(page: int, size: int):
    pass

С Fastapi мы объявляем маршруты и свои параметры, близкие к способу, которое серверует конечную точку. Мы также получаем параметры маршрута непосредственно в параметрах метода, поэтому нам не нужно проверять общие структуры данных для поиска и проверки параметров, представляющих усиление нашей производительности.

3. Автоматическая сериализация и десериализация

Fastapi автоматически определивает телы запросов на параметры метода. Чтобы получить тело запроса в качестве объекта в нашем методе, нам нужно создать класс Pydantic Model и объявить эту модель как тип нашего параметра. Например:

from pydantic import BaseModel

class Patient(BaseModel):
    name: str
    address: str

@app.post("/patients")
def save_patient(patient: Patient):
    pass

С другой стороны, можно автоматически сериализировать модель формата JSON, просто возвращая объект. Например:

@app.get("/patient/{patient_id}")
def save_patient(patient_id):
    return Patient('John Smith', '99 Nowhere Street')

Таким образом, мы Fastapi нам не нужно беспокоиться о обработке сериализации и десериализации в нашем бизнес-коде.

4. Декларативная проверка

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

@app.get("/patients")
def get_patient(page: int, size: int):
    pass

Однако только проверки типов параметров недостаточно. Нам также необходимо подтвердить принятый диапазон для них. В предыдущем, не имеет смысла иметь отрицательные значения или ноль для страницы и размера. Таким образом, мы можем изменить наш метод принять только положительные числа:

@app.get("/patients")
def get_patient(\
        page: int = Query(..., gt=0),\
        size: int = Query(..., gt=0)):
    pass

Мы также можем установить валидаторы для наших моделей. Например, мы можем подтвердить, что имя поля модели пациента будет принимать только буквы и иметь максимальную длину 50 символов:

class Patient(BaseModel):
    name: str = Field(regex='[a-zA-Z\s]*', max_length=50)
    address: str

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

5. Автоматическая документация Генерация

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

С Fastapi у нас есть отличная документация для наших API без значительных дополнительных усилий. Это связано с тем, что Fastapi автоматически генерирует страницу документации OperAPI (SWARGER) для нашего API и делает его доступным под нашим путем нашей приложения/DOC. Документация, сгенерированная Fastapi, включает в себя:

  • Конечные точки нашего API
  • Параметры запроса и ответы
  • Возвращенные коды
  • Схемы объектов, используемые в запросах и ответах
  • Интерфейс для проверки нашего API

Вся информация, используемая для создания страницы документации, исходит из нашего кода. Нет необходимости писать дополнительные файлы, ни выполнять дополнительные команды для генерации документов. Вы начинаете служить приложение, и в документации есть.

Заключение

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

Чтобы узнать больше о Fastapi, посетите сайт:

https://fastapi.tiangolo.com/

Оригинал: “https://dev.to/rodolfomendes/5-reasons-to-adopt-fastapi-to-build-rest-web-services-ki5”