FastAPI is a modern web framework for building APIs with Python, based on standard Python type hints. FastAPI is becoming increasingly popular due to its speed, ease of use, and built-in support for modern Python features like type hinting and async/await syntax.
In this tutorial, we will compare FastAPI with Flask, another popular web framework for Python, and show you how to get started with FastAPI.
FastAPI vs Flask
Both FastAPI and Flask are popular web frameworks for building APIs with Python. However, there are some key differences between the two that you should be aware of before choosing which one to use for your project.
-
Performance: FastAPI is built on top of Starlette, a high-performance ASGI framework, and uses Pydantic for data validation. This makes FastAPI faster than Flask, especially for data-intensive applications. FastAPI also supports asynchronous programming with async/await syntax, which can further improve performance.
-
Type hints: FastAPI uses standard Python type hints to define request and response data structures, which are then validated and automatically converted to and from JSON. This makes it easier to write type-safe code and catch bugs at compile-time. Flask, on the other hand, relies on decorators for request handling, which can be less intuitive and error-prone.
-
Automatic documentation: FastAPI automatically generates API documentation based on type hints and docstrings, using tools like Swagger UI and ReDoc. This can be very helpful for API users to understand how to interact with your API. Flask also supports documentation generation, but it requires additional setup and configuration.
- Middleware and plugins: FastAPI has built-in support for middleware, which allows you to add custom processing logic to your API requests and responses. Flask also supports middleware, but FastAPI’s middleware system is more powerful and easier to use. FastAPI also has a plugin system for adding additional functionality to your API easily.
Getting started with FastAPI
To get started with FastAPI, you first need to install it using pip:
pip install fastapi
You will also need to install an ASGI server like uvicorn to run your FastAPI application:
pip install uvicorn
Next, create a new Python file with the following code to define a simple FastAPI application:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def read_root():
return {"Hello": "World"}
This code creates a new FastAPI application with a single route ("/") that returns a JSON response with the message "Hello, World".
You can run your FastAPI application using uvicorn:
uvicorn app:app --reload
This command starts the uvicorn server and reloads your FastAPI application whenever you make changes to your code.
You can now access your FastAPI application in a web browser or using tools like curl or Postman. Try accessing http://localhost:8000/ in your browser to see the "Hello, World" message.
That’s it! You have now created a simple API using FastAPI. You can now add more routes, request validation, authentication, and other features to your API to build a full-featured application.
In conclusion, FastAPI is a modern web framework for building APIs with Python that offers superior performance, type safety, automatic documentation, and middleware support compared to Flask. If you are starting a new project or looking to switch to a faster and more modern framework, give FastAPI a try!
Do you want to learn technology from me? Check https://codebasics.io/ for my affordable video courses.
Great content, and easy to understand.
Sir i am pursuing ai ml ,does i have to learn web development also
thanks great help me lots
Amazing … 🤩 Which is best framework for dashboard development work ? could you suggest me on this.
what is the first interface i didn't reconise it
I have problem with python. I INSTALL IT 100 times it just don't work and I can't know the problem. pls help
True respect to you sir thank you for such a great video ❤😊
Nice Explanation 👌👍
hii sir this is api in which if portion will take much time than else so if i make two request to simu ltaneously it using http://localhost:8000/hello/40 and http://localhost:8000/hello/60 in two different tabs . so when i execute http://localhost:8000/hello/40 it is taking 8 sec but the other api http://localhost:8000/hello/60 should be quicker but instead of giving quick answer it waits for the first request to complete . i dont want the requests to be dependent on one another
from fastapi import FastAPI
import time
app=FastAPI()
@app.get("/hello/{num}")
async def hello(num):
if int(num) < 50:
def complex_computation(n):
start_time = time.time()
result = 0
for i in range(n):
result += i**2
end_time = time.time()
elapsed_time = end_time – start_time
return result, elapsed_time
result, elapsed_time = complex_computation(10**8) # Complex computation for small num
print(f"Result from if block: {result}")
print(f"Time taken for if block: {elapsed_time:.2f} seconds")
else:
print("mango")
# Call the function with num that triggers the 'if' block
How can ı use MINGW64 command prompt to write this command ?
Your video are always easy to understand with great examples ♥💻
Hey there, where are you executing this uvicorn command to obtain the address? I'm working with FastAPI in a Jupyter Notebook. Do I need to use Powershell? Where are you launching this terminal window labelled as MinGW?"
very nice.
many thank's
02 Hours of content in 16 minutes 🎯.
Thank you!!!
Best tutorial for fast api will recommend to my folks
great explanation
Please help me explain meaning of endpoints..Why they are necessary??
Informative, Thank you!