Объясняя тайну…
В мире программной инженерии бывает сложно уследить за всей причудливой терминологией, используемой разработчиками. Термин «промежуточное ПО» не является исключением, и, к сожалению, в университетах он широко не используется. В попытке помочь некоторым из недавно получивших образование разработчиков, цель этой статьи будет заключаться в том, чтобы объяснить концепцию промежуточного программного обеспечения в 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