REST API Sample Application
Requirements
- Docker
- Docker Compose
Usage
make help
Display help, and the most useful Makefile targetsmake start
Build all containers and start the servicesmake start_debug
Build container with the application and a debuggermake stop
Stop all containersmake app
Build application containermake app_debug
Build application and debugger containermake clean
Remove any existing containers and volumes of the applicationmake openapi_validate
Validate the OpenAPI specification filemake openapi_editor
Start the Swagger Editor (http://localhost:18081/)
API endpoints
curl http://localhost:18080/-/live
Check if the service is upcurl http://localhost:18080/-/health
Check if the service and its dependencies are upcurl http://localhost:18080/-/metrics
Prometheus metricscurl http://localhost:18080/users
Return all userscurl http://localhost:18080/users/1
Return the user with ID1
curl -H 'Content-type: application/json' http://localhost:18080/users -d '{"name":"new user"}'
Add a new user
Testing
make test
Run all tests. Use the TAGS argument to pass specific tags (e.g.make TAGS=api test
)
Migrations
All database migrations should be backward compatible, so only the up
ones are needed.
The migrations library supports the down
ones though, in case you want to play with fire :)
See MIGRATIONS.md for more details.
Architecture
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ ├─────────▶│ │─────────▶│ User │─────────▶│ │ │HTTP Handlers│ │User Service │ │ Repository │ │ Database │ │ │◀─────────┤ │◀─────────│ │◀─────────┤ │ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘
License
- MIT