88 lines
1.7 KiB
Markdown
88 lines
1.7 KiB
Markdown
# API Service - FastAPI
|
|
|
|
A RESTful API service built with FastAPI featuring Swagger documentation.
|
|
|
|
## Features
|
|
|
|
- 📚 Automatic Swagger/OpenAPI documentation
|
|
- 🔄 RESTful API endpoints
|
|
- ✅ Data validation with Pydantic
|
|
- 📊 Statistics and monitoring endpoints
|
|
- ❤️ Health check endpoints
|
|
|
|
## Local Development
|
|
|
|
### Run with Python
|
|
|
|
```bash
|
|
# Install dependencies
|
|
pip install -r requirements.txt
|
|
|
|
# Run the application
|
|
python main.py
|
|
|
|
# Or use uvicorn directly
|
|
uvicorn main:app --reload --host 0.0.0.0 --port 8000
|
|
```
|
|
|
|
### Run with Docker
|
|
|
|
```bash
|
|
# Build image
|
|
docker build -t fastapi-api .
|
|
|
|
# Run container
|
|
docker run -p 8000:8000 fastapi-api
|
|
```
|
|
|
|
## API Endpoints
|
|
|
|
### Items
|
|
- `GET /items` - List all items (with pagination)
|
|
- `GET /items/{item_id}` - Get specific item
|
|
- `POST /items` - Create new item
|
|
- `PUT /items/{item_id}` - Update item
|
|
- `DELETE /items/{item_id}` - Delete item
|
|
|
|
### Users
|
|
- `GET /users` - List all users
|
|
- `GET /users/{user_id}` - Get specific user
|
|
- `POST /users` - Create new user
|
|
|
|
### Other
|
|
- `GET /` - API information
|
|
- `GET /health` - Health check
|
|
- `GET /info` - Service information
|
|
- `GET /stats` - API statistics
|
|
|
|
## Documentation
|
|
|
|
- Swagger UI: http://localhost:8000/docs
|
|
- ReDoc: http://localhost:8000/redoc
|
|
- OpenAPI JSON: http://localhost:8000/openapi.json
|
|
|
|
## Example Requests
|
|
|
|
### Create Item
|
|
```bash
|
|
curl -X POST "http://localhost:8000/items" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"id": 4,
|
|
"name": "Monitor",
|
|
"description": "4K Display",
|
|
"price": 299.99,
|
|
"in_stock": true
|
|
}'
|
|
```
|
|
|
|
### Get Items
|
|
```bash
|
|
curl "http://localhost:8000/items?skip=0&limit=10&in_stock=true"
|
|
```
|
|
|
|
### Get Statistics
|
|
```bash
|
|
curl "http://localhost:8000/stats"
|
|
```
|