diff options
| author | James Elliott <james-d-elliott@users.noreply.github.com> | 2023-01-03 14:49:02 +1100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-01-03 14:49:02 +1100 |
| commit | 1c3219e93f16cde768d90be3b360f0c6c78231cf (patch) | |
| tree | acd013597163fcea4cae930aa6df50983740c85f /internal/server/handlers.go | |
| parent | acaadd81cbd5f43a160b96d6babdfee13f68f9fd (diff) | |
perf(server): cached openapi document (#4674)
This should lead to a small performance gain by caching the openapi.yml with etags as well as eliminating the use of nonce crypto generation when not required.
Diffstat (limited to 'internal/server/handlers.go')
| -rw-r--r-- | internal/server/handlers.go | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/internal/server/handlers.go b/internal/server/handlers.go index d9b4fdbfc..e88621545 100644 --- a/internal/server/handlers.go +++ b/internal/server/handlers.go @@ -93,9 +93,9 @@ func handleNotFound(next fasthttp.RequestHandler) fasthttp.RequestHandler { func handleRouter(config schema.Configuration, providers middlewares.Providers) fasthttp.RequestHandler { optsTemplatedFile := NewTemplatedFileOptions(&config) - serveIndexHandler := ServeTemplatedFile(assetsRoot, fileIndexHTML, optsTemplatedFile) - serveSwaggerHandler := ServeTemplatedFile(assetsSwagger, fileIndexHTML, optsTemplatedFile) - serveSwaggerAPIHandler := ServeTemplatedFile(assetsSwagger, fileOpenAPI, optsTemplatedFile) + serveIndexHandler := ServeTemplatedFile(providers.Templates.GetAssetIndexTemplate(), optsTemplatedFile) + serveOpenAPIHandler := ServeTemplatedOpenAPI(providers.Templates.GetAssetOpenAPIIndexTemplate(), optsTemplatedFile) + serveOpenAPISpecHandler := ETagRootURL(ServeTemplatedOpenAPI(providers.Templates.GetAssetOpenAPISpecTemplate(), optsTemplatedFile)) handlerPublicHTML := newPublicHTMLEmbeddedHandler() handlerLocales := newLocalesEmbeddedHandler() @@ -126,10 +126,12 @@ func handleRouter(config schema.Configuration, providers middlewares.Providers) r.GET("/locales/{language:[a-z]{1,3}}/{namespace:[a-z]+}.json", middlewares.AssetOverride(config.Server.AssetPath, 0, handlerLocales)) // Swagger. - r.GET("/api/", middleware(serveSwaggerHandler)) + r.GET("/api/", middleware(serveOpenAPIHandler)) r.OPTIONS("/api/", policyCORSPublicGET.HandleOPTIONS) - r.GET("/api/"+fileOpenAPI, policyCORSPublicGET.Middleware(middleware(serveSwaggerAPIHandler))) - r.OPTIONS("/api/"+fileOpenAPI, policyCORSPublicGET.HandleOPTIONS) + r.GET("/api/index.html", middleware(serveOpenAPIHandler)) + r.OPTIONS("/api/index.html", policyCORSPublicGET.HandleOPTIONS) + r.GET("/api/openapi.yml", policyCORSPublicGET.Middleware(middleware(serveOpenAPISpecHandler))) + r.OPTIONS("/api/openapi.yml", policyCORSPublicGET.HandleOPTIONS) for _, file := range filesSwagger { r.GET("/api/"+file, handlerPublicHTML) |
