Объясняя тайну…

В мире программной инженерии бывает сложно уследить за всей причудливой терминологией, используемой разработчиками. Термин «промежуточное ПО» не является исключением, и, к сожалению, в университетах он широко не используется. В попытке помочь некоторым из недавно получивших образование разработчиков, цель этой статьи будет заключаться в том, чтобы объяснить концепцию промежуточного программного обеспечения в API и изучить некоторые ее примеры с использованием фреймворка Python FastAPI. Итак, без лишних слов, приступим!

Что это значит?

Как вы, возможно, догадались, прочитав заголовок, в этой статье мы сосредоточимся на API. Однако важно знать, что ПО промежуточного слоя фактически присутствует во всех ИТ-отделах. По сути, это программное обеспечение, которое действует как уровень перевода, который находится между операционной системой компьютера и приложениями, работающими на нем. Однако, когда дело доходит до FastAPI, промежуточным программным обеспечением могут быть функции, которые выполняются перед каждым запросом, отправленным в API. Также могут быть функции, которые выполняются перед возвратом ответа пользователю.

Различные типы

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

ПО промежуточного слоя CORS

CORS - один из первых типов промежуточного программного обеспечения, которое я реализую при создании своих API. CORS расшифровывается как Cross-Origin Resource Sharing и, в двух словах, это механизм, который позволяет загружать ресурсы из других источников. Чтобы настроить это в FastAPI, вам нужно добавить этот модуль:

from fastapi.middleware.cors import CORSMiddleware

После добавления объявите список «источников», в котором будут размещены все домены, адреса и т. Д., Которым будет разрешен доступ к API.

origins = [
     "http://YOURORIGIN",
]

После этого используйте «app.add_middleware», чтобы активировать источники, которые вы хотите использовать.

app.add_middleware(
     CORSMiddleware,
     allow_origins=origins,
     allow_credentials=True,
     allow_methods=["*"],
     allow_headers=["*"],
)

Обратите внимание, что вы также можете указать определенные заголовки и методы. В приведенном выше примере используется подстановочный знак «*».

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

ПО промежуточного слоя перенаправления HTTPS

Еще одно удобное дополнение к вашему API - проверка того, что все входящие запросы используют HTTPS. Реализация довольно проста, и вы можете начать с импорта этого модуля:

from fastapi.middleware.httpsredirect import HTTPSRedirectMiddleware

После этого просто добавьте промежуточное ПО с помощью функции add_middleware:

app.add_middleware(HTTPSRedirectMiddleware)

Чтобы увидеть это в действии, запустите свой API с помощью команды «uvicorn». Затем откройте Postman и попробуйте отправить запрос по HTTP. В выводе консоли для вашего API вы должны увидеть что-то похожее на это:

Пользовательское ПО промежуточного слоя

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

@app.middleware("http")
async def TestCustomMiddleware(request: Request, call_next):
     print("Middleware works!")
     response = await call_next(request)
     return response

Анализируя это дальше, функция принимает два параметра. Первый - это фактический запрос, отправляемый в API. Объект из этого модуля позволяет нам получить доступ к запросу.

from fastapi import FastAPI, Request

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

Заключение

Когда я впервые начал работать с промежуточным программным обеспечением в API (моя повседневная работа использует C # Dotnet Core), я должен признать, что это было довольно скучно. В то время это была одна из тех вещей, которые я не до конца понимал, но построил ее, потому что мне сказали об этом. Однако после небольшого исследования части головоломки начали складываться вместе, и я начал понимать, почему мне постоянно говорят, что нужно их реализовать. Как я продемонстрировал с помощью FastAPI, они могут охватывать весь спектр функций, от защиты API до регистрации информации.

Я предлагаю вам продолжить изучение концепций промежуточного программного обеспечения в API, поскольку они довольно важны. Если вам интересно, какие типы промежуточного программного обеспечения FastAPI может предложить, есть еще пара, которые не обсуждались в этой статье (я не использую их так часто). Более подробную информацию о типах промежуточного программного обеспечения ASGI, промежуточного программного обеспечения TrustedHost и промежуточного программного обеспечения GZip можно найти здесь.

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

Читайте все мои статьи бесплатно с помощью моего еженедельного информационного бюллетеня, спасибо!

Хотите читать все статьи на Medium? Станьте участником Medium сегодня же!

Ознакомьтесь с моими недавними статьями:











Использованная литература:











Промежуточное ПО - FastAPI
Вы можете добавить промежуточное ПО к приложениям FastAPI. «Промежуточное ПО
- это функция, которая работает с каждым запросом, прежде чем он… fastapi.tiangolo.com »



Больше контента на plainenglish.io