1
0
mirror of https://github.com/pocketbase/pocketbase.git synced 2025-03-27 00:09:09 +02:00

[#1233] added health API endpoint

This commit is contained in:
Marvin Wendt 2022-12-11 16:27:46 +01:00 committed by GitHub
parent 506bfca8b2
commit 5c899a4cf0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 54 additions and 0 deletions

View File

@ -100,6 +100,7 @@ func InitApi(app core.App) (*echo.Echo, error) {
bindFileApi(app, api)
bindRealtimeApi(app, api)
bindLogsApi(app, api)
bindHealthApi(app, api) // health check should always be initialized after everything else is done
// trigger the custom BeforeServe hook for the created api router
// allowing users to further adjust its options or register new routes

28
apis/health.go Normal file
View File

@ -0,0 +1,28 @@
package apis
import (
"github.com/labstack/echo/v5"
"github.com/pocketbase/pocketbase/core"
"net/http"
)
// bindHealthApi registers the health api endpoint.
func bindHealthApi(app core.App, rg *echo.Group) {
api := healthApi{app: app}
subGroup := rg.Group("/health")
subGroup.GET("", api.healthCheck)
}
type healthApi struct {
app core.App
}
// healthCheck returns a 200 OK response if the server is healthy.
func (api *healthApi) healthCheck(c echo.Context) error {
payload := map[string]any{
"code": http.StatusOK,
"message": "API is healthy.",
}
return c.JSON(http.StatusOK, payload)
}

25
apis/health_test.go Normal file
View File

@ -0,0 +1,25 @@
package apis_test
import (
"github.com/pocketbase/pocketbase/tests"
"net/http"
"testing"
)
func TestHealthAPI(t *testing.T) {
scenarios := []tests.ApiScenario{
{
Name: "health status returns 200",
Method: http.MethodGet,
Url: "/api/health",
ExpectedStatus: 200,
ExpectedContent: []string{
`"code":200`,
},
},
}
for _, scenario := range scenarios {
scenario.Test(t)
}
}