[#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)
 | 
						bindFileApi(app, api)
 | 
				
			||||||
	bindRealtimeApi(app, api)
 | 
						bindRealtimeApi(app, api)
 | 
				
			||||||
	bindLogsApi(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
 | 
						// trigger the custom BeforeServe hook for the created api router
 | 
				
			||||||
	// allowing users to further adjust its options or register new routes
 | 
						// 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