package api import ( _ "embed" "net/http" "github.com/go-chi/chi/v5" ) // openAPISpec is the API's OpenAPI 3.1 description, generated by go generate // (see doc.go). // //go:embed openapi/swagger.json var openAPISpec []byte // docsPage shows openapi.json, relative to /api/docs, in Swagger UI, loaded // from jsDelivr at a fixed version. A content security policy // (server.headers.content_security_policy) must allow that. const docsPage = ` JobSearch API
` // docsRoutes registers the API's description on router: GET /openapi.json, // the OpenAPI 3.1 description, and GET /docs, a viewer of it. func docsRoutes(router chi.Router) { router.Get("/openapi.json", serveOpenAPISpec) router.Get("/docs", serveDocsPage) } // serveOpenAPISpec serves GET /openapi.json. func serveOpenAPISpec(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") w.Write(openAPISpec) //nolint:errcheck,gosec // the client may have gone } // serveDocsPage serves GET /docs. func serveDocsPage(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "text/html; charset=utf-8") w.Write([]byte(docsPage)) //nolint:errcheck,gosec // the client may have gone }