Generic REST API

This is a REST API built with FastAPI and SQLite. It provides endpoints for managing items with full CRUD operations.

Features

  • FastAPI framework for high performance
  • SQLite database for data storage
  • SQLAlchemy ORM for database interactions
  • Alembic for database migrations
  • Pydantic for data validation
  • Automatic OpenAPI documentation
  • CORS enabled
  • Health check endpoint

Requirements

  • Python 3.8+
  • All dependencies listed in requirements.txt

Setup

  1. Clone the repository
  2. Install dependencies:
pip install -r requirements.txt
  1. Set up environment variables (optional):
# Create a .env file or set these in your environment
NAME=YourNameValue
  1. Create and migrate database:
# The storage directory and database will be created automatically when running the app

Running the Application

Start the application with:

uvicorn main:app --host 0.0.0.0 --port 8000 --reload

API Documentation

Once the application is running, you can access:

API Endpoints

  • GET /: API information
  • GET /health: Health check endpoint
  • GET /env/name: Returns the value of the NAME environment variable
  • GET /api/v1/items: List all items
  • POST /api/v1/items: Create a new item
  • GET /api/v1/items/{id}: Get an item by ID
  • PUT /api/v1/items/{id}: Update an item
  • DELETE /api/v1/items/{id}: Delete an item

Project Structure

.
├── alembic.ini             # Alembic configuration
├── app                     # Application package
│   ├── api                 # API endpoints
│   │   └── v1              # API version 1
│   │       ├── api.py      # API router setup
│   │       └── endpoints   # Endpoint modules
│   │           └── items.py # Items endpoints
│   ├── core                # Core application code
│   │   └── config.py       # Application configuration
│   ├── crud                # CRUD operations
│   │   ├── base.py         # Base CRUD class
│   │   └── item.py         # Item CRUD operations
│   ├── db                  # Database setup
│   │   ├── base.py         # Base model imports
│   │   ├── base_class.py   # Base model class
│   │   ├── init_db.py      # Database initialization
│   │   └── session.py      # Database session
│   ├── models              # Database models
│   │   └── item.py         # Item model
│   └── schemas             # Pydantic schemas
│       └── item.py         # Item schemas
├── main.py                 # Application entry point
├── migrations              # Database migrations
│   ├── env.py              # Alembic environment
│   ├── README              # Migrations README
│   ├── script.py.mako      # Migration script template
│   └── versions            # Migration versions
└── requirements.txt        # Python dependencies

Development

To lint and format the code:

ruff check .
ruff format .
Description
Project: Generic REST API
Readme 45 KiB
Languages
Python 96.5%
Mako 3.5%