diff --git a/pkg/modules/api/api.go b/pkg/modules/api/api.go index 7daa1892..7e4302d5 100644 --- a/pkg/modules/api/api.go +++ b/pkg/modules/api/api.go @@ -483,6 +483,22 @@ func (a *Api) Start() error { ) } + // Root route. + a.srv.GET( + a.rootPath, + func(c echo.Context) error { + return c.HTML(http.StatusOK, `Hey, this Gotenberg has no UI, it's an API. Head to the documentation to learn how to interact with it 🚀`) + }, + ) + + // Favicon route. + a.srv.GET( + fmt.Sprintf("%s%s", a.rootPath, "favicon.ico"), + func(c echo.Context) error { + return c.NoContent(http.StatusNoContent) + }, + ) + // Let's not forget the health check routes... checks := append(a.healthChecks, health.WithTimeout(a.timeout)) checker := health.NewChecker(checks...) diff --git a/pkg/modules/api/api_test.go b/pkg/modules/api/api_test.go index b32eace8..9a123176 100644 --- a/pkg/modules/api/api_test.go +++ b/pkg/modules/api/api_test.go @@ -866,15 +866,31 @@ func TestApi_Start(t *testing.T) { return } - // health requests. + // root request. recorder := httptest.NewRecorder() + rootRequest := httptest.NewRequest(http.MethodGet, "/", nil) + mod.srv.ServeHTTP(recorder, rootRequest) + if recorder.Code != http.StatusOK { + t.Errorf("expected %d status code but got %d", http.StatusOK, recorder.Code) + } + // favicon request. + recorder = httptest.NewRecorder() + faviconRequest := httptest.NewRequest(http.MethodGet, "/favicon.ico", nil) + mod.srv.ServeHTTP(recorder, faviconRequest) + if recorder.Code != http.StatusNoContent { + t.Errorf("expected %d status code but got %d", http.StatusNoContent, recorder.Code) + } + + // health requests. + recorder = httptest.NewRecorder() healthGetRequest := httptest.NewRequest(http.MethodGet, "/health", nil) mod.srv.ServeHTTP(recorder, healthGetRequest) if recorder.Code != http.StatusOK { t.Errorf("expected %d status code but got %d", http.StatusOK, recorder.Code) } + recorder = httptest.NewRecorder() healthHeadRequest := httptest.NewRequest(http.MethodHead, "/health", nil) mod.srv.ServeHTTP(recorder, healthHeadRequest) if recorder.Code != http.StatusOK { @@ -882,6 +898,7 @@ func TestApi_Start(t *testing.T) { } // version request. + recorder = httptest.NewRecorder() versionRequest := httptest.NewRequest(http.MethodGet, "/version", nil) mod.srv.ServeHTTP(recorder, versionRequest) if recorder.Code != http.StatusOK {