2.7 KiB
2.7 KiB
Static2API
A simple FastAPI application that automatically exposes CSV and JSON files as API endpoints.
Features
- Automatically creates API endpoints for CSV and JSON files in the
source
directory - Files are accessible via
/api/{filename}
endpoints - New files are detected automatically without restarting the server
- Runs in a secure container with Docker or Podman
Quick Start
Option 1: Run with Python
# Install dependencies
pip install -r requirements.txt
# Run the application
uvicorn main:app --reload
The API will be available at: http://localhost:8000
Option 2: Run with Docker/Podman
Use the provided script to run the application in a container:
# Make the script executable
chmod +x run_container.sh
# Run the container
./run_container.sh
The API will be available at: http://localhost:8000
API Endpoints
GET /
- Welcome messageGET /api/{filename}
- Access data from files in the source directory
Example:
GET /api/contacts
- Returns data fromsource/contacts.csv
GET /api/users
- Returns data fromsource/users.json
Sample Responses
CSV Example (from contacts.csv)
curl http://localhost:8000/api/contacts
Response:
[
{
"location": "dortmund",
"contact": "achim"
},
{
"location": "madrid",
"contact": "santos"
}
]
JSON Example (from users.json)
curl http://localhost:8000/api/users
Response:
{
"users": [
{
"name": "John",
"email": "john@example.com"
},
{
"name": "Jane",
"email": "jane@example.com"
}
]
}
Adding New Files
- Place CSV or JSON files in the
source
directory - Files will be automatically accessible via
/api/{filename}
- No restart required
File Format Support
- CSV files: Must have a header row with column names
- JSON files: Must contain valid JSON data
Manual Container Setup
Docker
# Build the image
docker build -t static2api:latest .
# Run the container
docker run --name static2api \
-p 8000:8000 \
-v "./source":/home/appuser/app/source \
--security-opt no-new-privileges:true \
--cap-drop ALL \
--user 1000:1000 \
-d static2api:latest
Podman
# Build the image
podman build -t static2api:latest .
# Run the container
podman run --name static2api \
-p 8000:8000 \
-v "./source":/home/appuser/app/source:Z \
--security-opt no-new-privileges:true \
--cap-drop ALL \
--user 1000:1000 \
-d static2api:latest
Container Management
View Logs
docker logs static2api
# or
podman logs static2api
Stop Container
docker stop static2api
# or
podman stop static2api
Remove Container
docker rm static2api
# or
podman rm static2api