Automated Action ac56a7b6e5 Create comprehensive FastAPI REST API service
- Set up FastAPI application with SQLite database
- Implement User and Item models with relationships
- Add CRUD operations for users and items
- Configure Alembic for database migrations
- Include API documentation at /docs and /redoc
- Add health check endpoint at /health
- Enable CORS for all origins
- Structure code with proper separation of concerns
2025-06-25 11:20:01 +00:00

85 lines
2.3 KiB
Markdown

# REST API Service
A comprehensive REST API built with FastAPI, SQLAlchemy, and SQLite.
## Features
- User management (CRUD operations)
- Item management with user ownership
- SQLite database with Alembic migrations
- Automatic API documentation with FastAPI
- CORS enabled for all origins
- Health check endpoint
## Project Structure
```
├── main.py # FastAPI application entry point
├── requirements.txt # Python dependencies
├── alembic.ini # Alembic configuration
├── alembic/ # Database migrations
├── app/
│ ├── api/ # API routes
│ ├── crud/ # Database operations
│ ├── db/ # Database configuration
│ ├── models/ # SQLAlchemy models
│ └── schemas/ # Pydantic schemas
└── storage/ # Application storage directory
```
## Installation
1. Install dependencies:
```bash
pip install -r requirements.txt
```
2. Run database migrations:
```bash
alembic upgrade head
```
3. Start the application:
```bash
uvicorn main:app --reload
```
## API Endpoints
- **GET /**: Service information and links
- **GET /health**: Health check endpoint
- **GET /docs**: Interactive API documentation
- **GET /redoc**: Alternative API documentation
### Users
- **POST /api/v1/users/**: Create a new user
- **GET /api/v1/users/**: List all users
- **GET /api/v1/users/{user_id}**: Get user by ID
- **PUT /api/v1/users/{user_id}**: Update user
- **DELETE /api/v1/users/{user_id}**: Delete user
### Items
- **POST /api/v1/items/**: Create a new item
- **GET /api/v1/items/**: List all items
- **GET /api/v1/items/{item_id}**: Get item by ID
- **PUT /api/v1/items/{item_id}**: Update item
- **DELETE /api/v1/items/{item_id}**: Delete item
- **GET /api/v1/items/users/{user_id}/items**: Get items by user
## Database
The application uses SQLite as the database, stored at `/app/storage/db/db.sqlite`.
## Environment Variables
No environment variables are currently required for basic operation.
## Development
The application includes:
- Automatic code formatting with Ruff
- Database migrations with Alembic
- Comprehensive CRUD operations
- Input validation with Pydantic
- Automatic API documentation