Add endpoint to read CONTENT environment variable

- Created a new endpoint at /api/v1/env/content that returns the CONTENT environment variable
- Added error handling for when the environment variable is not set
- Updated documentation with new endpoint information and usage examples
- Added environment variables as a new feature in README
This commit is contained in:
Automated Action 2025-05-31 21:31:18 +00:00
parent 783583b234
commit 1df01b998d
3 changed files with 55 additions and 2 deletions

View File

@ -7,6 +7,7 @@ A simple Todo API built with FastAPI and SQLite.
- 📝 **Todo Management**: Create, read, update, and delete todo items
- 🔍 **Filtering & Pagination**: Filter todos by completion status and paginate results
- 📊 **Health Monitoring**: Endpoint to check application and database health
- 🔧 **Environment Variables**: Access to environment variables via API
- 🛡️ **Error Handling**: Comprehensive error handling with meaningful messages
- 📚 **API Documentation**: Auto-generated Swagger/OpenAPI documentation
@ -25,6 +26,7 @@ A simple Todo API built with FastAPI and SQLite.
├── app/
│ ├── api/
│ │ └── v1/
│ │ ├── env_vars.py # Environment variables endpoints
│ │ ├── health.py # Health check endpoint
│ │ ├── router.py # API router
│ │ └── todos.py # Todo CRUD endpoints
@ -99,6 +101,10 @@ Interactive API documentation is available at:
- `PATCH /api/v1/todos/{todo_id}` - Update a todo
- `DELETE /api/v1/todos/{todo_id}` - Delete a todo
### Environment Variables Endpoints
- `GET /api/v1/env/content` - Get the value of the CONTENT environment variable
## Example Usage
### Create a Todo
@ -143,6 +149,19 @@ curl -X 'PATCH' \
curl -X 'DELETE' 'http://localhost:8000/api/v1/todos/1'
```
### Get CONTENT Environment Variable
```bash
curl -X 'GET' 'http://localhost:8000/api/v1/env/content'
```
To set the environment variable before running the application:
```bash
export CONTENT="Your content here"
uvicorn main:app --host 0.0.0.0 --port 8000 --reload
```
## License
This project is licensed under the MIT License.

33
app/api/v1/env_vars.py Normal file
View File

@ -0,0 +1,33 @@
import os
from typing import Dict
from fastapi import APIRouter, HTTPException, status
router = APIRouter()
@router.get(
"/env/content",
response_model=Dict[str, str],
summary="Get content from CONTENT environment variable",
description="Returns the value of the CONTENT environment variable"
)
def get_content_env_var():
"""
Retrieve the value of the CONTENT environment variable.
Returns:
dict: A dictionary containing the CONTENT environment variable value
Raises:
HTTPException: If the CONTENT environment variable is not set
"""
content_value = os.environ.get("CONTENT")
if content_value is None:
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail="CONTENT environment variable is not set"
)
return {"content": content_value}

View File

@ -1,8 +1,9 @@
from fastapi import APIRouter
from app.api.v1 import health, todos
from app.api.v1 import env_vars, health, todos
api_router = APIRouter()
api_router.include_router(health.router, tags=["health"])
api_router.include_router(todos.router, prefix="/todos", tags=["todos"])
api_router.include_router(todos.router, prefix="/todos", tags=["todos"])
api_router.include_router(env_vars.router, tags=["environment"])