[#1233] added health API endpoint
This commit is contained in:
		
							parent
							
								
									506bfca8b2
								
							
						
					
					
						commit
						5c899a4cf0
					
				| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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)
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -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)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue