Skip to main content

What is FastAPI?

FastAPI is a modern, high-performance Python framework for building REST APIs. It uses Python type hints, provides automatic validation, and generates interactive API documentation out of the box.

Key Features of FastAPI

  • 🚀 High Performance: Built on top of Starlette and Pydantic, making it one of the fastest Python frameworks available, on par with Node.js and Go.
  • ✍️ Faster Coding: Speeds up feature development by 200% to 300%.
  • 🛡️ Fewer Bugs: Reduces developer-induced errors by about 40% through automatic validation.
  • 📖 Auto-Generated Documentation: Generates interactive documentation pages (Swagger UI and ReDoc) automatically.
  • 🔒 Modern & Async: Native support for asynchronous programming (async/await) out of the box.

The Tech Stack Under the Hood

FastAPI stands on the shoulders of giants:
  • Uvicorn: An ASGI (Asynchronous Server Gateway Interface) web server implementation for Python. It acts as the web server that receives incoming TCP connections from clients and forwards them to FastAPI.
  • Starlette: A lightweight ASGI framework toolkit. FastAPI inherits all its routing and web handling capabilities from Starlette.
  • Pydantic: The data validation and serialization library. It enforces types and formats data.

Learning Objectives in this chapter..

After completing this chapter, you will be able to:
  • Install and configure FastAPI
  • Create and run your first API
  • Understand routing and HTTP methods
  • Work with path and query parameters
  • Accept request data using Pydantic models
  • Return structured responses
  • Validate request data
  • Use HTTP status codes
  • Explore the generated API documentation

Prerequisites

  • Python 3.10 or later
  • pip or uv
  • Virtual Environment (recommended)
  • VS Code or any Python IDE

Creating a Virtual Environment

Activate the environment. Windows
macOS / Linux

Installing FastAPI

Verify the installation.

Your First FastAPI Application

Create a file named main.py.

Understanding the First FastAPI Program

Unlike traditional Python programs, a FastAPI application is not a program that runs from top to bottom and immediately produces an output. Instead, we configure the FastAPI server by telling it:
  • What application to create
  • Which URLs it should respond to
  • Which function should execute for each URL
When a client (such as a browser or Postman) sends a request, the FastAPI server uses this configuration to determine which function to execute.

Key Points

1. Import the FastAPI Class

Imports the FastAPI class, which is used to create a FastAPI application.

2. Create the Application

Creates the FastAPI application object. The app object stores:
  • API endpoints
  • Application configuration
  • Middleware
  • Dependencies
  • API documentation
Note: This does not start the server. It only creates and configures the application.

3. Register an Endpoint

Registers a GET endpoint for the root URL (/). It tells FastAPI:
“If a GET request is received for /, execute the function below.”

4. Define the Request Handler

This is a normal Python function. Unlike traditional Python programs, you do not call this function yourself. FastAPI automatically calls it when a matching request arrives.

5. Return the Response

Returns a Python dictionary. FastAPI automatically converts it into a JSON response. Client receives:

6. JSON is the Default Response Format

FastAPI automatically converts Python objects such as:
  • Dictionaries
  • Lists
  • Pydantic models
into JSON before sending them to the client. You do not need to manually convert them into JSON.

Traditional Python vs FastAPI

Traditional Python

  • Program executes from top to bottom.
  • Functions are called explicitly by the programmer.
  • Program ends after execution.

FastAPI

  • You configure the application.
  • Register API endpoints.
  • Start the server.
  • FastAPI waits for incoming requests.
  • FastAPI automatically calls the appropriate function when a request arrives.

Execution Flow

Key Takeaways

  • FastAPI() creates the web application.
  • @app.get("/") registers an endpoint.
  • Functions are executed automatically by FastAPI.
  • Most FastAPI code is configuration, not direct execution.
  • By default, FastAPI returns responses in JSON format.
  • FastAPI handles request routing and response generation automatically.

Running the Application

Common options:
Command Breakdown
  • main → Python file (main.py)
  • app → FastAPI application object
  • --reload → Restart server on code changes
  • --host → Host address
  • --port → Server port

Accessing the Application

Routing

A route maps an API endpoint to a Python function.
Example:
Request flow:

Common Routes

A route simply connects an API endpoint to a Python function.

Path Parameters

Path parameters are part of the URL and identify a specific resource.
Request:
Examples:

Query Parameters

Query parameters appear after the ? in the URL.
Request:
Common uses:
  • Searching
  • Filtering
  • Sorting
  • Pagination

Request Body

Use a Pydantic model to receive JSON data.
Request body:

Response Models

Define the response structure using response_model.

Status Codes

Request Validation

FastAPI automatically validates incoming data.
Invalid request:
If validation fails, FastAPI returns a 422 Validation Error without executing the route.

Automatic API Documentation

Quick Commands

Summary

In this chapter, you learned how to:
  • Install FastAPI
  • Create and run a FastAPI application
  • Define routes
  • Work with path and query parameters
  • Accept request bodies
  • Return response models
  • Validate request data
  • Use HTTP status codes
  • Explore the generated API documentation