Интерфейсите за програмиране на приложения се превърнаха в новата норма на тази ера и бяха неразделна част от захранването на тези съвременни приложения и сега е още по-трудно да си представим приложения, които се изграждат без използването на тези API интерфейси. По-големият акцент върху адаптирането на естествените облачни технологии за изграждане на приложения с висока производителност в мащаб предоставя възможности за оптимизиране на тези типичнимикро рамки, които се използват за изграждане на тези API.

FastAPI е още една микро рамка на Python, изградена с мисъл за идеологията на нуждата от скорост. Ключовите характеристики включват висока производителност, готов за производство, здрав, надежден и лесен за кодиране с вградени асинхронни и синхронни възможности и е в лигата на рамката с висока производителност/производителност в сравнение с Go и Node JS. Tech Empower направи сравнителен анализ на различните уеб рамки. Чувствайте се свободни да проверите резултатите от сравнителния тест в TechEmpower бенчмаркове“.

Тази статия се вдъхнови от мой колега, който случайно ни вдъхнови да оценим този FastAPI.

Следните дизайнерски подходи са силно адаптирани за изграждане на тези API през HTTP и повечето от съвременните микро рамки следват тези идеологии за внедряване.

  • REST— Прехвърляне на представително състояние
  • gRPC — Извиквания на отдалечени процедури
  • OpenAPI— Спецификации на Swagger

FastAPI адаптира тези OpenAPI стандарти и предоставя възможност за интегрирани автоматични валидации на модел на данни/схема, сериализация и интерактивна документация извън кутията.

API — Реализации

Без бъдещи задължения, нека се потопим в изграждането на малко приложение, което внедрява следните крайни точки на API с помощта на рамка FastAPI. Пакетите по-долу са предпоставки, необходими за изграждането на това приложение

pip install fastapi
pip install uvicorn
  • /health използва GET метод — Показване на състоянието на приложението.
  • /v1/crypto/info използва POST метод — За получаване на информация за крипто валутата с помощта на API от coin gecko.

Действителният код, който прилага горните крайни точки, е илюстриран по-долу.

Внедрихме крайна точка /health с помощта на методаGET и /v1/crypto/info като метод POST, в идеалния случай и двата трябва да бъдат GET, но ние използвахме POST за илюстрация. Декораторите (@app.get(“/health”) и (@app.post(“/v1/crypto/info”) внедрява крайните точки на API.

class Crypto(BaseModel):
    crypto_name: str
    description: Optional[str] = None

В горния POST метод също внедрихме валидиране на заявка, за да потвърдим, че входящата заявка съответства на нашата спецификация. който е дефиниран от обект с име „Crypto“. Заявката за въвеждане трябва да съответства на спецификацията, дефинирана в „Крипто“ обекта, за да бъде обработена заявката или ще бъде върната грешка при валидиране. В нашия пример тялото на заявката трябва да съдържа полето „crypto_name“ като задължително за нашата заявка и това валидиране до голяма степен се обработва от рамката без необходимост от допълнителни кодове за целите на валидирането на заявката.

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

Резултати от тестовете

Създадохме приложението, прилагащо горепосочените крайни точки. Командите по-долу трябва да бъдат изпълнени за стартиране на сървъра и позволяват преглед на нашите кодове в действия.

uvicorn main:app

„main“ — е името на файла на python (в нашия случай main.py)

„приложение“ — е името на приложението, което сме използвали за дефиниране на приложението

Резултат — GET /здраве

Резултат — POST /v1/crypto/info

Екранната снимка по-долу илюстрира грешката при валидиране, върната в случай на грешка при валидиране на заявка. В нашия случай задължителният параметър на заявката „crypto_name“ липсва във входната заявка.

API спецификация

Друга подчертана функция за рамката FastAPI е възможността за предоставяне на автоматизирана документация за спецификация на API. Генерираната API спецификация предоставя интерактивни начини за достъп до тези спецификации. Спецификацията на API се генерира във формати Swagger и Redoc, които могат да бъдат достъпни чрез следния URL адрес

Swagger Specifications :
hostname/docs
http://localhost:8000/docs
Redoc Specifications :
hostname/redoc
http://localhost:8000/redoc

Документация на Swagger:

Redoc документация:

Резюме

Интерфейсите за програмиране на приложения изминаха дълъг път и те наистина революционизираха начина, по който приложенията обменят информация помежду си, а микрорамките на python работят като Flash, aiohttp , FastAPI осигури по-голяма абстракция от аспектите на внедряването на основния нюанс позволявайки изграждане на API с лекота и с бързи темпове от всякога. FastAPI определено е рамка, която трябва да имате предвид, ако искате да изградите RESTful API интерфейс или да функционирате като внедряване на услуга.

До следващия път….. Приятно четене….

Референции:

https://fastapi.tiangolo.com

https://github.com/tiangolo/fastapi

https://cloud.google.com/blog/products/api-management/understanding-grpc-openapi-and-rest-and-when-to-use-them