GoREST Status Plugin

Status check endpoint plugin for GoREST framework.
Installation
go get github.com/nicolasbonnici/gorest-status
Usage
import (
"github.com/nicolasbonnici/gorest/pluginloader"
statusplugin "github.com/nicolasbonnici/gorest-status"
)
func init() {
pluginloader.RegisterPluginFactory("status", statusplugin.NewPlugin)
}
Configuration
Add to your gorest.yaml:
plugins:
- name: status
enabled: true
Advanced Configuration
You can customize the endpoint path using plugin configuration:
plugins:
- name: status
enabled: true
config:
endpoint: "health" # Custom endpoint path (default: "status")
Configuration Parameters:
endpoint (string): Custom path for the health check endpoint. Default: "status"
- Example:
"health" creates endpoint at /health
- Example:
"api/status" creates endpoint at /api/status
Server Configuration:
The plugin automatically receives server configuration from GoREST v0.4.4+ for accurate URL logging:
server_scheme: Protocol (http/https) - Default: "http"
server_host: Hostname or IP address - Default: "localhost"
server_port: Port number - Default: 8000
These parameters are automatically injected by GoREST based on your gorest.yaml server configuration. The plugin uses these values to display the correct health check URL in startup logs.
Example server configuration in gorest.yaml:
server:
scheme: https
host: api.example.com
port: 443
plugins:
- name: status
enabled: true
config:
endpoint: "health"
This will display: Health check available at https://api.example.com/health (ports 80 with http scheme and 443 with https scheme are omited).
Features
- Customizable status check endpoint (default:
/status)
- Database connectivity check
- Returns HTTP 200 when healthy
- Returns HTTP 503 when database is down
- JSON response format
- Startup logging with endpoint URL
Healthy (database configured and up):
{
"status": "healthy",
"database": {
"status": "up"
}
}
Unhealthy (database down):
{
"status": "unhealthy",
"database": {
"status": "down",
"error": "connection failed"
}
}
Database not configured:
{
"status": "healthy",
"database": {
"status": "not_configured"
}
}
License
MIT License - see LICENSE file for details