FastAPI FastAPI

High-performance apps with FastAPI

Fast API is an un-opinionated web framework built over Starlette. Despite the fact that we already have pretty mature frameworks like Django and Flask, FastAPI is gaining more and more traction day by day. Released in 2018 it is amazing to have 40k+ Github stars and over 3k forks. If you ever worked on Flask before, it will be a charm for you.

Why FastAPI

Over other frameworks, FastApi carries a handful of advantages.

It’s Fast As its name, it’s really fast.

Performance of FastAPI competes with NodeJS and GO. Tec empower benchmark suggests uvicorn and starlette as the fastest Python frameworks. So, no wonder to see FastAPI’s high performance.

FastAPI

Based on Standards

FastAPI is fully based on open standards like OpenAPI-Specification and JSON schema for data model specification. This brings an added advantage to FastAPI to be easy to understand even if you haven’t ever worked on it.

Less code

A basic API in FastAPI can be written in less than 10 lines. It’s similar to Flask. Not to consider Django here as it follows a totally different code structure and its opinionated as well. Fewer lines of code mean fewer bugs and more peace.

Fast to code

Lesser code means you can make it pretty quick as well. With resources being more and more costly it is really efficient compared to other languages and frameworks. Less time setting and bringing it up and running.

Automatic interactive documentation

API documentation plays a crucial role to not just developers but testers and other stakeholders as well. With automatic documentation, it saves developers from writing documents for API and updating them from time to time. Plus, the interactive documentation provides a quick way to test APIs on the go.

FastAPI

Typed in Python

Supporting only modern Python 3.6+ it is fully typed in Python which means it provides out of the box automatic code completion. It’s not just fast but fun too.

FastAPI

It’s Asynchronous

Being based on Starlette and uvicorn makes it support async out of the box. It is one of the primary reasons for being a super high performer. Though Django also supports async programming, it’s not as integrated as FastAPI.

Security and authentication mechanisms

As with any other web framework security and authentication are one of the primary requirements. FastAPI provides fully functional and reusable security and authentication components including – HTTP Basic – OAuth2 – API keys in headers, query params, cookies, etc.

Think about these too

You should look on both sides of the road before crossing. With the above advantages, it seems to be a good fit for any type of application. But there are downfalls too.

Small community

Having giants in the market like Django and Flask the FastAPI community is relatively small. It is still in the process to be the best in the race in many dimensions

Lack of libraries

It’s new, it’s amazing, it’s un-opinionated but with production-ready apps you need opinions, right? Open-source libraries provide great ways to make your app more robust. But it takes time to build them. As FastAPI, its supporting libraries are also new. They might have some sharp edges. Handle carefully.

Smaller ecosystem

Ecosystem refers to a set of other factors affecting the framework. That includes its user-base, contributors, helper libraries, support from other organizations etc.

Yet to mature

At the time of writing this blog post, FastAPI’s latest version is v0.72.0 which means it might or might not have breaking changes in the future. It’s rapidly developing but we still need to wait for its v1.0

So, should you use it?

All that being said we don’t mean it’s not ready to be used. Many organizations are already using it in production apps. Microsoft, Uber, Netflix are some of them. It concerns what you need. Before having a conclusion make sure you have all application-related use cases covered with FastAPI. If yes then go with it without any second thought. There can be no other better option than FastAPI at this moment. We are already using it in production with multiple proprietary and in-house applications.