FastAPI Practical Case: Build a Simple Blog API with 50 Lines of Code

FastAPI is a modern, high-performance Python framework that supports asynchronous programming, type hints, and automatic API documentation, making it ideal for quickly building APIs. This article implements a simple blog API with CRUD functionality for articles using just 50 lines of code. First, install `fastapi` and `uvicorn`. Define `PostCreate` (request model) and `PostResponse` (response model) using `Pydantic`, and simulate an in-memory list `posts` to store articles. Five endpoints are implemented: `GET /posts` (retrieve all articles), `GET /posts/{post_id}` (single article), `POST /posts` (create, with 201 status code), `PUT /posts/{post_id}` (update), and `DELETE /posts/{post_id}` (with 204 status code). FastAPI's automatic parameter validation and status code handling are leveraged throughout. FastAPI automatically generates Swagger UI and ReDoc documentation, facilitating easy testing of the API. Key knowledge points include route definition, Pydantic data models, status codes, and automatic documentation. Potential extensions could include adding a database, user authentication, and pagination. This example demonstrates FastAPI's concise and efficient nature, making it an excellent starting point for beginners.

Read More
FastAPI + Redis: Basic Application of Caching and State Management

Web development often faces challenges of handling rapid request responses and sharing temporary state across multiple requests. The combination of FastAPI (a high-performance asynchronous framework) and Redis (an in-memory database) effectively addresses these issues. FastAPI supports high concurrency, while Redis, with its fast read/write speed and expiration time features, can cache frequently accessed, low-updating data (such as Fibonacci calculation results) to reduce redundant computations and store temporary states (such as user access counters) for cross-request sharing. This article introduces environment setup (installing FastAPI, Redis client, and starting Redis), basic connections (using utility functions to manage Redis clients with `decode_responses=True` to ensure string results), and demonstrates applications through two examples: caching (Fibonacci calculation results) and state management (user access counts). It also mentions dependency injection for code optimization and notes on Redis persistence, connection pooling, and key naming conventions in production environments.

Read More
FastAPI + JWT Authentication: Implementing Simple User Login Verification

This article introduces the complete process of implementing user login authentication using FastAPI and JWT, with the core steps as follows: 1. **Environment Preparation**: Install FastAPI, uvicorn, python-jose (for JWT handling), passlib[bcrypt] (for password hashing), and python-multipart (for form processing). 2. **Core Concepts**: JWT enables stateless authentication, FastAPI dependencies reuse verification logic, and passwords are stored using bcrypt hashing. 3. **Code Implementation**: - Configure JWT parameters (secret key, algorithm, expiration time) and simulate a user database. - Use passlib to generate password hashes and define utility functions for JWT generation and verification. - Define OAuth2 dependencies to extract tokens, create a login endpoint (/token) to validate users and return tokens, and protected endpoints (/users/me) to return user information after token validation. 4. **Running Tests**: Start the uvicorn service, use Swagger UI to test the login endpoint for obtaining a token, and then use the token to access protected endpoints. 5. **Key Knowledge Points**: Dependency reuse for verification logic, secure handling of JWT secrets (environment variables for production), and password hashing to prevent plaintext leaks. Through the above steps, the implementation

Read More
FastAPI + Uvicorn: Basic Configuration for Local Development and Deployment

This article introduces the web development and deployment process using FastAPI with Uvicorn. FastAPI is a high-performance Python framework supporting asynchronous operations and automatic API documentation. Uvicorn, as an ASGI server, is the recommended deployment tool for FastAPI, and their combination enables efficient development. **Environment Installation**: First, create a virtual environment (e.g., `python -m venv venv`), activate it, and then install dependencies with `pip install fastapi uvicorn`. **Development Configuration**: Write `main.py`, define routes (e.g., root route `/` and parameterized route `/items/{item_id}`), and start the server with `uvicorn main:app --reload` for auto-reloading in development mode. Verify the interface by accessing `http://127.0.0.1:8000`. **Production Deployment**: Use the basic command `uvicorn main:app --host 0.0.0.0 --port 8000`. Specify the number of worker processes with `--workers` for multi-processing. Ensure the deployment server opens the port and manage processes via `nohup` or `systemd`. **Common Issues**: For port conflicts, change the port. If the service is unreachable, confirm `--host 0.0.0.0` and firewall settings. If installation fails, update pip or check Python version compatibility.

Read More
FastAPI + SQLAlchemy: Rapidly Building Database-Driven APIs

This article introduces how to build a database-driven API using FastAPI + SQLAlchemy, suitable for beginners. Its core advantages lie in FastAPI's high performance, automatic API documentation, and concise syntax, combined with SQLAlchemy's ORM to simplify database operations. Prerequisites include installing FastAPI, Uvicorn, SQLAlchemy, and Pydantic. The project adopts a modular structure: database.py configures database connections (using SQLite as an example), models.py defines ORM models for user tables, schemas.py uses Pydantic for data validation (distinguishing requests/responses), crud.py implements CRUD operations, and main.py integrates modules and defines API routes. Core modules include: database engine, session management (automatically creating/closing connections), user table models, data validation, and CRUD logic. The service is started via Uvicorn, and the Swagger UI enables interactive API testing. Advantages include automatic documentation, ORM simplification of SQL, modular design, and dependency injection for session management, making it suitable for quickly building efficient and maintainable web applications.

Read More
FastAPI + CORS: A Quick Solution to Cross-Origin Resource Sharing Issues

Cross-origin issues occur when a frontend requests backend APIs from different domains, ports, or protocols, which are blocked by the browser's same-origin policy. By default, FastAPI does not handle cross-origin requests and requires the CORS middleware to resolve this. The core solution involves adding `CORSMiddleware` to FastAPI, with key parameters including: `allow_origins` (allowed frontend domains, use `["*"]` for development and specify specific domains in production), `allow_credentials` (whether to allow cookies to be carried across origins), `allow_methods` (allowed HTTP methods), and `allow_headers` (allowed request headers). It is crucial to avoid `allow_origins=["*"]` in production environments, as this should be restricted to specific domains. When allowing credentials, `allow_origins` must be explicitly specified. After configuration, the frontend can request backend APIs normally, such as the example where `fetch("http://localhost:8000/api/hello")` returns data. In summary, configuring the CORS middleware safely resolves cross-origin issues, offering flexibility in development while requiring strict parameter restrictions in production.

Read More
FastAPI Error Handling: Practical Guide to HTTP Status Codes and Exception Catching

API error handling is crucial for system robustness and user experience, and FastAPI provides a concise and efficient error handling mechanism. The core of the article includes: ### 1. Necessity of Error Handling It is necessary to clarify the error cause and use standard HTTP status codes (e.g., 404 for resource not found, 400 for parameter errors) to avoid system crashes and ensure service stability. ### 2. HTTP Status Codes and FastAPI Applications FastAPI supports all standard status codes. Route functions can directly specify them via `return` or `raise`. For example: `return {"detail": "Item not found"}` returns 404, or `HTTPException` can be used to explicitly throw errors. ### 3. FastAPI Exception Catching Mechanism It is recommended to actively throw errors using `HTTPException` with specified status codes and messages, such as returning 404 when a user does not exist. FastAPI automatically handles parameter type errors and returns a 422 status code. ### 4. Custom Exceptions and Global Fallback Business logic exceptions (e.g., insufficient balance) can be defined and uniformly handled using `@app.exception_handler` to return standard errors. The global exception handler falls back to uncaught exceptions to prevent server crashes. ### Best Practices Use `HTTPException` for standard errors, custom exceptions for business logic, and leverage automatic parameter

Read More
FastAPI File Uploads: A Complete Guide from Basics to Advanced

FastAPI, a high-performance Python web framework, offers a concise and efficient solution for file uploads. Installation requires `fastapi` and `uvicorn`. Single files are handled via `UploadFile`, which supports asynchronous content reading and provides metadata like filename and MIME type. The Swagger UI (`/docs`) enables interface testing. For advanced use cases, it supports multi-file uploads (`List[UploadFile]`), mixed form data (`Form` parameters), file size/type validation, and streaming processing for large files to prevent memory overflow. Practical tips include path management, custom filenames (e.g., using `uuid` to avoid conflicts), and error handling. In production, professional storage services are recommended instead of local storage. Mastery of single-file uploads, multi-file processing, and streaming large file uploads allows rapid construction of reliable services.

Read More
FastAPI Practical: Building RESTful APIs with GET and POST Methods

FastAPI is a modern, high-performance Python Web framework based on type hints, with automatic generation of Swagger UI and ReDoc documentation, and supports asynchronous operations. It is suitable for beginners. For environment setup, install FastAPI and Uvicorn using `pip install fastapi uvicorn`. Example 1: GET endpoint (/users). Create a FastAPI instance, simulate user data, define the `GET /users` path, and return the user list. Start the server with `uvicorn main:app --reload` and access `/docs` to view the documentation. Example 2: POST endpoint (/users). Use Pydantic to define the `UserCreate` model for validating request data. Receive new user information, generate a new ID, and add it to the list. Test using the JSON request body filled in via Swagger UI. Advantages of FastAPI include automatic documentation, type validation, and high-performance asynchronous capabilities. It is recommended to explore extending path parameters, other HTTP methods, and database integration. With a gentle learning curve, FastAPI is suitable for beginners to start API development.

Read More
FastAPI State Management: Simple Implementation of Global Variables and Caching

In FastAPI, two common approaches for state management are global variables and caching. Global variables are the simplest way to share state, usable directly in single-process environments but requiring asyncio.Lock to prevent race conditions in multi-request scenarios. Their limitations include process isolation issues, memory dependency, and data loss risks. Caching is more efficient and categorized into three types: in-memory caching (using dictionaries or the cachetools library, supporting LRU/TTL strategies), and distributed caching (e.g., Redis, suitable for cross-service sharing and persistence). Comparison: Global variables suit single-process, simple scenarios, while caching is ideal for high-frequency access, distributed systems, or data requiring persistence. Practical recommendations: Use global variables or cachetools in development, and distributed caches like Redis in production to avoid cross-process issues with global variables.

Read More
FastAPI Dependency Injection: Practical Tips for Simplifying Code Structure

FastAPI's Dependency Injection (DI) centralizes the management of repetitive logic (e.g., database connections), resulting in cleaner and more flexible code with reduced redundancy, making it easier to test and extend. In DI, dependencies are encapsulated as independent entities, and interfaces request dependencies via `Depends`, eliminating the need for repeated implementations. **Core Usage**: Define a dependency function (e.g., `get_db`), which uses `yield` to manage database connections (ensuring they close after the request ends). Declare dependencies in interface functions using `Depends(dependency)`. Supports parameterized dependencies (e.g., querying a user by user ID) and nested dependencies (dependency chains are automatically resolved). **Advantages**: Reduced code duplication, easier testing (via mock objects), automatic resource management (e.g., connection closure), and integration with Swagger documentation. **Best Practices**: Single responsibility principle, avoiding over-dependency, and handling asynchronous dependencies with `async def`.

Read More
Why Choose FastAPI? The Top 5 Advantages of Python Web Frameworks

FastAPI is a modern, high-performance Python web framework suitable for building APIs and beginner-friendly. It has five core advantages: First, high performance, based on Starlette and Pydantic, with asynchronous support, enabling fast response times under high concurrency. Second, automatic API documentation accessible via `/docs` or `/redoc` for visual interactive testing without additional tools. Third, data validation combined with Pydantic, where structure is defined using type hints, automatically checking parameter types to reduce errors. Fourth, native asynchronous support via `async def` for route definitions, preventing request blocking when handling slow operations like database queries. Fifth, simplicity and ease of use with concise syntax and a gentle learning curve, allowing service startup with just a few lines of code. In summary, FastAPI, with its high performance, automated tools, data validation, asynchronous support, and ease of use, is ideal for rapid API or high-concurrency application development, making it a preferred choice for developers.

Read More
Why is FastAPI Lighter Than Django? A Comparative Analysis for Beginners

This article focuses on "lightweight" frameworks, comparing the core differences between FastAPI and Django. "Lightweight" refers to simple configuration, minimal code, a gentle learning curve, and focused functionality. FastAPI is a typical representative, while Django is a full-stack framework with comprehensive features but is not considered lightweight. FastAPI's lightness is evident in: minimal dependencies (only `fastapi` and `uvicorn` are required), concise code (API can be written in just a few lines), functionality focused on API development (no redundant features like an Admin backend), automatic generation of interactive API documentation (Swagger UI and ReDoc), and native support for asynchronous programming. As a full-stack framework, Django offers comprehensive features (ORM, Admin, forms, etc.), but it has a complex structure for beginners (requiring multiple steps such as project creation, app setup, and route configuration), a steep learning curve, scattered files, and is prone to distracting users with irrelevant functionalities. Beginners should choose based on their needs: FastAPI is suitable for rapid API development (e.g., backend interfaces, microservices), while Django is ideal for full-stack projects (e.g., e-commerce, CMS). Lightweight does not mean having fewer features; rather, it emphasizes focus and simplicity. FastAPI is the best entry tool for API beginners.

Read More
FastAPI vs Flask: Which Is Better for Beginners to Develop Quickly?

This article compares the Python web frameworks Flask and FastAPI, with the core content as follows: Flask, an established lightweight framework born in 2010, is renowned for its "flexibility". It is easy to install (`pip install flask`), with a core focused solely on routing and view functions. It has a gentle learning curve, making it suitable for rapid prototyping, but requires manual handling of JSON and parameter validation. FastAPI (2018), on the other hand, emphasizes high performance. Built on Starlette and Pydantic, it comes with automatic API documentation and data validation. Installation requires Uvicorn (`pip install fastapi uvicorn`), and it has a slightly steeper learning curve (needing an understanding of type hints and Pydantic models). However, it offers long-term efficiency, automatic data validation, and asynchronous support, making it ideal for complex scenarios (e.g., high concurrency and automatic documentation). Conclusion: For simple projects or beginners, choose Flask; for those pursuing modern features and long-term scalability, and who have basic Python knowledge, choose FastAPI. Both have their advantages, and the choice depends on specific needs.

Read More
FastAPI Middleware: How to Handle Cross-Origin, Authentication, and Other Request Interceptions

FastAPI middleware acts as a request/response interceptor, processing data before requests enter and responses return. Its core function is to uniformly handle requests and responses, with earlier-registered middleware executing first and executing in reverse order when returning. Typical applications include: 1. Cross-origin resource sharing (CORS): Implemented via CORSMiddleware, configuring allowed origins (e.g., "*" for development, specific domains for production), credentials, methods, and headers to resolve front-end cross-origin request issues. 2. Authentication interception: Custom middleware for global Token verification (e.g., Bearer Token), returning 401 for failed verification, distinct from dependencies (which target specific routes). Considerations include execution order, avoiding excessive interception, and distinguishing between middleware (for general logic) and dependencies (for local logic).

Read More
FastAPI Documentation Auto-generation: Tips for Using Swagger and OpenAPI

FastAPI's automatic documentation is based on the OpenAPI specification, providing interactive API documentation through Swagger UI and ReDoc. It can quickly display interface functions, parameters, and return values, supporting direct testing. Enabling it is simple: create a FastAPI application, and after running, access `/docs` (Swagger UI) or `/redoc` (ReDoc) to view the documentation. Core techniques include: setting global information (title, description, version, etc.) using FastAPI constructor parameters; using function annotations and the `Path`/`Query` utility classes to describe interfaces and parameters in detail; categorizing interfaces with `tags` for easy filtering; hiding internal interfaces with `include_in_schema=False`; using Pydantic models to standardize return formats, or `HTTPException` to mark error status codes. These methods can enhance document clarity and usability, avoid the trouble of manual writing and maintenance, ensure consistency between interface information and code, and optimize team collaboration and user experience.

Read More
FastAPI Asynchronous Programming: A Practical Guide from Basics to Simple Applications

FastAPI asynchronous programming is suitable for I/O - intensive tasks. The core is to avoid blocking the event loop. Asynchronous views are defined using `async def`, and calling asynchronous functions requires `await` (for example, simulating a database query). Synchronous views use `def` and are suitable for simple logic or CPU - intensive tasks. Asynchronous views are non - blocking and can handle multiple requests at the same time. For asynchronous database operations, SQLAlchemy 1.4+ (requires an asynchronous driver) or Tortoise - ORM (more concise) can be chosen. For task processing: `asyncio.create_task` is used for small tasks, and asynchronous queues (such as Celery + Redis) are used for long - running tasks. `time.sleep()` should be avoided and `asyncio.sleep()` should be used instead. Also, stay away from CPU - intensive operations. By mastering these key points, you can efficiently build high - concurrency asynchronous applications.

Read More
Detailed Explanation of FastAPI Parameters: Path Parameters, Query Parameters, and Request Body

FastAPI is a high-performance Python web framework that supports automatic document generation and parameter validation. Its core parameter types include path parameters, query parameters, and request bodies. **Path Parameters**: Defined as `{parameter_name}` in the URL path. They are declared with type hints in function parameters (e.g., `item_id: int`), and FastAPI automatically extracts and converts their types. Multiple parameters are supported (e.g., `/users/{user_id}/orders/{order_id}`). **Query Parameters**: Presented as `key=value` after the question mark in the URL. They are defined similarly to regular function parameters, supporting default values (e.g., `item_id: int = None`). FastAPI automatically parses list parameters (e.g., `tags=python&tags=fastapi` is converted to a list). **Request Bodies**: JSON data sent in POST requests, defined using Pydantic models for structure (e.g., an `Item` class with fields like `name` and `price`). FastAPI validates data types using Pydantic and supports nested models. **Applicable Scenarios**: Path parameters identify resources (e.g., IDs), query parameters filter and paginate data, and request bodies transmit complex data. FastAPI automatically identifies parameters in a specific order, returning a 422 validation error for type mismatches.

Read More
FastAPI Practical: Building RESTful APIs with GET and POST Methods

FastAPI is a Python-based modern web framework with advantages such as high performance (close to Node.js and Go), automatic API documentation generation (Swagger UI and ReDoc), type hint support, and ease of use. For environment preparation, install FastAPI and uvicorn (recommended ASGI server). Quick start example: Create a root path endpoint (`@app.get("/")`) that returns a welcome message. Run with the command `uvicorn main:app --reload`. GET method practice includes: ① Path parameters (e.g., `/users/{user_id}`) with automatic type validation; ② Query parameters (e.g., `/users/filter?name=张三`) for filtering. POST method requires defining a Pydantic model (e.g., `UserCreate`) to receive JSON data, with automatic format validation and new user creation. FastAPI automatically generates API documentation; access `http://localhost:8000/docs` (Swagger UI) or `/redoc` to test interfaces. Its core advantages are summarized as: type hints, data validation, and interactive documentation, making it suitable for quickly building reliable RESTful APIs.

Read More
Differences Between FastAPI and Traditional API Frameworks: A Novice's Perspective

This article compares the core differences between FastAPI and traditional API frameworks (such as Flask). Traditional frameworks are lightweight and easy to get started with, but complex features require manual implementation (e.g., parameter validation, document generation), and they have weak synchronous blocking performance. FastAPI, on the other hand, automatically validates parameter types using Python type hints, eliminating the need for manual logic; it includes interactive documentation based on the OpenAPI specification (accessible via `/docs` for testing interfaces), eliminating the need for additional tools; it automatically validates data types and formats using Pydantic, with intuitive error prompts; it supports asynchronous non-blocking processing for high-concurrency requests; and its code is more concise (with dependency injection and automatic return models). In summary, FastAPI is suitable for rapid development and high-concurrency scenarios, while traditional frameworks are better for simple projects. Beginners are advised to prioritize learning FastAPI to balance efficiency and skill development.

Read More
Beginners Guide: How to Use Pydantic for Data Validation in FastAPI

This article introduces the core content of using Pydantic for data validation in FastAPI. Data validation is crucial in web development, and FastAPI leverages the built-in Pydantic library to achieve efficient validation. Pydantic enables automatic checking of input validity by defining data models based on type hints (inheriting from BaseModel), supporting both basic and complex types (e.g., list, dict), and distinguishing between required fields (without default values) and optional fields (with default values). In FastAPI, Pydantic models are mainly used to handle request data (such as POST request bodies). FastAPI automatically parses and validates the data, returning a 422 error with detailed information if validation fails. Response data can also be validated using a Pydantic model via the response_model parameter to ensure the correct return format. Additionally, Pydantic supports custom validation, such as setting field constraints (e.g., length, range) through Field or using custom functions (e.g., email format verification). The advantages of Pydantic lie in automatic validation, user-friendly error messages, type safety, and flexible extension. It prevents program crashes or security vulnerabilities caused by invalid data, making it a core tool for building secure and robust APIs with FastAPI.

Read More
FastAPI Basic Tutorial: Basic Usage of Routes, Requests, and Responses

FastAPI is a high-performance Python-based web framework with performance comparable to Node.js and Go. It features auto-generated Swagger UI and ReDoc documentation, type hint-based data validation, and concise, easy-to-learn code. Installation requires `pip install fastapi uvicorn` to obtain the framework and ASGI server. Basic routes are defined using the `@app` decorator, supporting path parameters (e.g., `/items/{item_id}`) and query parameters (e.g., `/search?q=test`), with automatic parameter type validation and conversion. Request handling relies on Pydantic models to define JSON request bodies, such as the `Item` class for receiving POST data. Response handling can specify `response_model` to return Pydantic models or use `status_code` to set status codes (e.g., 201). A complete example includes multiple routes and request/response handling. To run it, use `uvicorn main:app --reload`, and access `/docs` or `/redoc` to view the auto-generated API documentation. FastAPI enhances API development efficiency with its simplicity and automatic documentation features, making it suitable for quickly developing high-performance web services.

Read More
Learning FastAPI from Scratch: Quickly Understanding the Core Concepts of API Development

API serves as a bridge for communication between different software systems. As a Python web framework, FastAPI has gained popularity due to its advantages such as simplicity, high performance, automatic API documentation generation, type hint support, and async-friendliness. Quick Start: After installing FastAPI and Uvicorn, write a main.py to define routes (e.g., @app.get("/")), then run Uvicorn to access the interface and return JSON data. Core concepts include: routes (URLs mapped to handler functions), HTTP request methods (GET for data retrieval, POST for data submission), three data handling methods (path parameters, query parameters, request bodies), and data validation (auto-validation via Pydantic models). Interactive documentation is automatically generated via Swagger UI (/docs) and ReDoc (/redoc). After mastering the basics, advanced learning can focus on asynchronous development, middleware, and database integration.

Read More
FastAPI Getting Started: Fundamentals of a Web Framework Every Python Developer Should Learn

A Web framework is a tool for rapidly building web applications, encapsulating details such as HTTP handling to allow developers to focus on business logic. FastAPI is a modern Python web framework built on Starlette and Pydantic, characterized by high performance, automatic API documentation generation (Swagger UI/ReDoc), asynchronous support, and data validation. Installation requires `pip install fastapi uvicorn`, and running it uses `uvicorn main:app --reload`. A basic example returns `{"message": "Hello, FastAPI!"}`. It supports path parameters (e.g., `/users/{user_id}`) and query parameters, with Pydantic models for data validation. It handles GET (retrieving data) and POST (submitting data) requests, with form data processed using `Form`. API documentation is auto-generated, accessible via `/docs` or `/redoc` for interactive testing. It supports asynchronous interfaces (`async def`) to handle high concurrency. Ideal for quickly developing RESTful APIs, it is recommended to start with basic examples and gradually learn advanced content such as middleware and dependency injection.

Read More
Flask API Development: JSON Data Return and Status Code Setting

This article introduces the basic points of returning JSON and setting HTTP status codes when developing APIs with Flask. To return JSON, use the `jsonify` function instead of directly returning a Python dictionary (though this is technically possible, it is not recommended because `jsonify` is more explicit and supports complex data types). `jsonify` automatically sets the `Content-Type: application/json` header. HTTP status codes are used to indicate the result of a request. Common codes include 200 (success), 201 (resource created successfully), 400 (bad request/parameter error), 404 (resource not found), and 500 (server error). Status codes can be set by returning a tuple (`(jsonify(data), status_code)`) or by constructing a response object using `make_response`. Examples cover common scenarios: returning 200 for successful GET requests, 201 for resource creation via POST, 400 for parameter errors, 404 for non-existent resources, and 500 for server errors. Mastering these basics will help standardize Flask API development and enable smooth front-end and back-end data interaction.

Read More