REST API design and implementation patterns for FastAPI endpoints including CRUD operations, pagination, filtering, error handling, and request/response models. Use when building FastAPI endpoints, creating REST APIs, implementing CRUD operations, adding pagination, designing API routes, handling API errors, or when user mentions FastAPI patterns, REST API design, endpoint structure, API best practices, or HTTP endpoints.
View on GitHubvanman2024/ai-dev-marketplace
fastapi-backend
February 1, 2026
Select agents to install to:
npx add-skill https://github.com/vanman2024/ai-dev-marketplace/blob/main/plugins/fastapi-backend/skills/fastapi-api-patterns/SKILL.md -a claude-code --skill fastapi-api-patternsInstallation paths:
.claude/skills/fastapi-api-patterns/# fastapi-api-patterns
## Instructions
This skill provides comprehensive REST API design patterns and implementation templates for FastAPI applications. It covers CRUD operations, pagination, filtering, request/response models, error handling, and API organization following modern best practices.
### 1. CRUD Endpoint Patterns
Create, Read, Update, Delete endpoints using FastAPI routers:
```bash
# Use CRUD template to generate complete endpoint set
cp ./skills/fastapi-api-patterns/templates/crud_endpoint.py app/routers/items.py
# Customize for your model
# - Replace Item model with your Pydantic model
# - Update database operations
# - Add authentication dependencies
```
**What This Provides:**
- `POST /items/` - Create new item
- `GET /items/{item_id}` - Read single item by ID
- `GET /items/` - Read multiple items with pagination
- `PUT /items/{item_id}` - Update entire item
- `PATCH /items/{item_id}` - Partial update
- `DELETE /items/{item_id}` - Delete item
**Router Structure:**
```python
from fastapi import APIRouter, HTTPException, Depends, status
from typing import List
router = APIRouter(
prefix="/items",
tags=["items"],
responses={404: {"description": "Not found"}},
)
```
### 2. Pagination and Filtering
Implement pagination with query parameters:
```bash
# Use pagination template
cp ./skills/fastapi-api-patterns/templates/pagination.py app/utils/pagination.py
```
**Pagination Strategies:**
**1. Offset-Based Pagination (Simple):**
```python
@router.get("/items/")
async def list_items(skip: int = 0, limit: int = 10):
return items[skip : skip + limit]
```
**2. Cursor-Based Pagination (Performance):**
```python
@router.get("/items/")
async def list_items(cursor: str | None = None, limit: int = 10):
# Use last item ID as cursor for next page
# Better for large datasets
```
**3. Page-Based Pagination (User-Friendly):**
```python
@router.get("/items/")
async def list_items(page: int = 1, page_size: int = 10):
skip = (page