What is FastAPI Used For?
FastAPI is becoming the go to framework for building APIs in Python, and you must be wondering: what exactly is FastAPI used for? And how can I take advantage of it?
I’ll break down everything you need to know about FastAPI in this article, and I will answer your main question: What is FastAPI used for?

What is FastAPI Used For?
FastAPI is a fast web framework used for creating APIs with Python. It’s designed to be easy to use and understand, making it perfect for both beginners and experienced developers. FastAPI uses Python type hints for an efficient and straightforward way to define API endpoints, validate data, and generate documentation automagically.
Why Use FastAPI?
Here are some key points that make FastAPI stand out:
- Fast: FastAPI is designed for very fast response times.
- Easy: It has a simple and intuitive syntax, reducing the learning curve.
- Automatic Documentation: It automatically generates interactive API documentation with Swagger UI and ReDoc.
- Type Safety: Leveraging Python’s type hints, FastAPI ensures type safety and better code completion.
Installing FastAPI
To help you understand what FastAPI is used for, we will get your hands dirty and actually use it to create a simple API.
First, let’s create a Python virtual environment then get FastAPI installed:
python -m venv env
source env/bin/activate
You’ll also need an ASGI server to run it, such as Uvicorn. You can install both FastAPI and uvicorn
using pip:
pip install fastapi uvicorn

Creating Your First FastAPI App
Creating an API with FastAPI is straightforward. First open a new Python file named app.py
:
nano app.py
Write the following code inside of this file:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "q": q}
In this example:
- We import FastAPI and create an instance of it.
- We define a couple of endpoints using the
@app.get
decorator. - The first endpoint returns a simple JSON response.
- The second endpoint accepts a path parameter (
item_id
) and an optional query parameter (q
).
Running Your FastAPI App
To run the app, use Uvicorn:
uvicorn app:app --reload
This command starts the server with auto-reloading enabled. You can now navigate to http://127.0.0.1:8000
in your browser to see your API in action.
Testing Your FastAPI App with Curl
Testing your FastAPI application with curl
is straightforward. To test the root endpoint (GET /
), use the following command:
curl -X GET "http://127.0.0.1:8000"
The output should be as follows:

Test the Item Endpoint (GET /items/{item_id}
)
This endpoint should return the item_id
and an optional query parameter q
.
To test it without the query parameter:
curl -X GET "http://127.0.0.1:8000/items/1"
This should return something like:

To test it with the query parameter:
curl -X GET "http://127.0.0.1:8000/items/1?q=test"
This should return something like:

FastAPI Features

Automatic Interactive Documentation
FastAPI automatically generates interactive API documentation. By default, you get Swagger UI at http://127.0.0.1:8000/docs
and ReDoc at http://127.0.0.1:8000/redoc
. This feature is a huge time-saver for both development and collaboration.
Data Validation with Pydantic
With FastAPI, you get data validation out of the box. By using Pydantic models, you can ensure the data your API receives is valid. Here’s an example:
from pydantic import BaseModel
class Item(BaseModel):
name: str
price: float
is_offer: bool = None
@app.post("/items/")
def create_item(item: Item):
return item
In this example, FastAPI will validate that the incoming request body matches the Item
model.
FastAPI Asynchronous Support
FastAPI supports asynchronous request handlers, allowing you to build highly concurrent applications:
@app.get("/async-items/")
async def read_async_items():
return {"message": "This is an async endpoint"}
Conclusion
FastAPI is a game-changer for Python developers looking to build fast, robust, and easy-to-maintain APIs. In my experience, its modern features, automatic documentation, and type safety make it a joy to work with.
You can use FastAPI to build a simple headless API or a complex backend system, or even integrate it with the ChatGPT API for AI magic! Give it a try, and you’ll see why it’s quickly becoming the go-to framework for many Python developers.
FAQ: FastAPI
Why should I use FastAPI?
FastAPI is designed to be easy to use and learn, while also providing high performance and automatic generation of interactive API documentation. It also supports asynchronous programming, which can handle many requests concurrently.
What kind of documentation does FastAPI generate?
FastAPI automatically generates interactive API documentation using Swagger UI and ReDoc. These can be accessed at /docs
and /redoc
endpoints, respectively.
Can I use FastAPI with existing Flask or Django projects?
Yes, you can integrate FastAPI with existing Flask or Django projects, although it requires some setup. FastAPI can run as a microservice within a larger application or be used to build new components incrementally.