2025-06-03 18:58:32 +00:00

133 lines
3.6 KiB
Markdown

# Generic REST API with FastAPI and SQLite
This is a RESTful API built with FastAPI and SQLite, providing a foundation for building robust web applications with Python.
## Features
- FastAPI framework with automatic API documentation
- SQLAlchemy ORM with SQLite database
- Alembic database migrations
- Repository pattern for database operations
- Pydantic models for data validation
- CORS middleware enabled
- Health check endpoint
- RESTful CRUD operations
## Requirements
- Python 3.8+
## Installation
1. Clone the repository:
```bash
git clone https://github.com/yourusername/genericrestapi.git
cd genericrestapi
```
2. Install dependencies:
```bash
pip install -r requirements.txt
```
3. Run database migrations:
```bash
alembic upgrade head
```
## Environment Variables
This application uses the following environment variables:
- None required for basic operation as the app uses SQLite with a fixed path
## Running the Application
Start the development server:
```bash
uvicorn main:app --reload
```
The API will be available at http://localhost:8000.
## API Documentation
Once the application is running, you can access:
- Interactive API documentation: http://localhost:8000/docs
- ReDoc API documentation: http://localhost:8000/redoc
- OpenAPI specification: http://localhost:8000/openapi.json
## API Endpoints
### Health Check
- `GET /health` - Check API health status
### Items API
- `GET /api/v1/items/` - List all items (with pagination)
- `POST /api/v1/items/` - Create a new item
- `GET /api/v1/items/{item_id}` - Get a specific item by ID
- `PUT /api/v1/items/{item_id}` - Update a specific item
- `DELETE /api/v1/items/{item_id}` - Delete a specific item
## Project Structure
```
.
├── alembic.ini # Alembic configuration
├── app/ # Application package
│ ├── api/ # API package
│ │ ├── app.py # FastAPI application instance
│ │ ├── health.py # Health check endpoint
│ │ └── v1/ # API v1 endpoints
│ │ └── routes.py # API route definitions
│ ├── core/ # Core functionality
│ │ ├── config.py # Application configuration
│ │ └── exceptions.py # Custom exception classes
│ └── db/ # Database package
│ ├── models/ # SQLAlchemy models
│ │ └── item.py # Item model definition
│ ├── repositories/ # Repository pattern implementations
│ │ ├── base.py # Base repository class
│ │ └── item.py # Item repository
│ ├── schemas/ # Pydantic schemas
│ │ └── item.py # Item schemas
│ └── session.py # Database session configuration
├── main.py # Application entry point
├── migrations/ # Alembic migrations
│ ├── env.py # Alembic environment
│ ├── README # Migrations README
│ ├── script.py.mako # Migration script template
│ └── versions/ # Migration versions
│ └── 0001_initial_migration.py # Initial migration
└── requirements.txt # Python dependencies
```
## Development
### Running Tests
Tests can be run using pytest:
```bash
pytest
```
### Code Formatting and Linting
This project uses Ruff for linting and code formatting:
```bash
ruff check .
ruff format .
```
## License
[MIT License](LICENSE)