Automated Action 938b6d4153 Create a simple generic REST API with FastAPI and SQLite
Implemented a complete FastAPI backend with:
- Project structure with FastAPI and SQLAlchemy
- SQLite database with proper configuration
- Alembic for database migrations
- Generic Item resource with CRUD operations
- REST API endpoints with proper validation
- Health check endpoint
- Documentation and setup instructions
2025-05-17 20:57:23 +00:00
2025-05-17 20:38:41 +00:00

Generic REST API Service

This is a FastAPI application that provides a simple generic REST API service with CRUD operations for an "Item" resource.

Features

  • FastAPI-based RESTful API
  • SQLite database with SQLAlchemy ORM
  • Alembic for database migrations
  • Pydantic for data validation
  • Comprehensive CRUD operations
  • Health check endpoint
  • Automatic OpenAPI documentation

Project Structure

├── alembic/                  # Database migration files
│   ├── versions/             # Migration version scripts
│   ├── env.py                # Alembic environment configuration
│   └── script.py.mako        # Migration script template
├── app/                      # Application package
│   ├── api/                  # API routes
│   │   ├── endpoints/        # API endpoint modules
│   │   ├── api.py            # API router setup
│   │   └── deps.py           # Dependency injection functions
│   ├── core/                 # Core application modules
│   │   └── config.py         # Application configuration
│   ├── crud/                 # CRUD operation modules
│   │   ├── base.py           # Base CRUD operations
│   │   └── crud_item.py      # Item-specific CRUD operations
│   ├── db/                   # Database modules
│   │   ├── base.py           # Import all models
│   │   ├── base_class.py     # Base model class
│   │   ├── init_db.py        # Database initialization
│   │   └── session.py        # DB session setup
│   ├── models/               # SQLAlchemy models
│   │   └── item.py           # Item model
│   └── schemas/              # Pydantic schemas
│       └── item.py           # Item schema
├── alembic.ini               # Alembic configuration
├── main.py                   # Application entry point
└── requirements.txt          # Project dependencies

Setup and Installation

  1. Clone the repository:
git clone <repository-url>
cd generic-rest-api-service
  1. Create and activate a virtual environment (optional, but recommended):
python -m venv venv
source venv/bin/activate  # On Windows: venv\\Scripts\\activate
  1. Install dependencies:
pip install -r requirements.txt
  1. Run database migrations:
alembic upgrade head
  1. Start the application:
uvicorn main:app --reload

The application will be available at http://127.0.0.1:8000.

API Documentation

Once the application is running, you can access the automatically generated API documentation:

API Endpoints

Health Check

  • GET /api/v1/health: Check if the service is healthy

Items

  • GET /api/v1/items: List all items
    • Query parameters:
      • skip: Number of items to skip (default: 0)
      • limit: Maximum number of items to return (default: 100)
      • active_only: If true, return only active items (default: false)
  • POST /api/v1/items: Create a new item
  • GET /api/v1/items/{id}: Get a specific item by ID
  • PUT /api/v1/items/{id}: Update a specific item
  • DELETE /api/v1/items/{id}: Delete a specific item (returns 204 No Content)

Development

Running Tests

# Add test command here

Linting with Ruff

ruff check .
ruff format .
Description
Project: Generic REST API Service
Readme 53 KiB
Languages
Python 90.8%
Shell 6.1%
Mako 3.1%