This package embeds swagger-ui-dist using
go-bindata and exposes an http.Handler
to integrate in existing HTTP server projects. The generated bindata
is available at go.skymeyer.dev/swagger-ui-bindata/bindata
and is generated with the -fs
option exposing an http.FileSystem
interface.
For the default Swagger UI, follow below code sample:
package main
import (
"net/http"
swaggerui "go.skymeyer.dev/swagger-ui-bindata"
)
func main() {
http.ListenAndServe(":8080", swaggerui.New().Handler())
}
More useful is the ability to set the OpenAPI spec you want to display instead of the default demo Petstore. This can be achieved by using the swaggerui.WithSpecURL
option.
swaggerui.New().Handler(
swaggerui.WithSpecURL("https://foobar.com/openapi.yaml"),
)
Alternatively, the OpenAPI spec can also be passed in []byte
format if you wish to embed it directly in the Go binary. For this, use the swaggerui.WithEmbeddedSpec
option.
swaggerui.New().Handler(
swaggerui.WithEmbeddedSpec(bindata.MustAsset("openapi.yaml")),
)
If both WithEmbeddedSpec
and swaggerui.WithSpecURL
are specified, then WithEmbeddedSpec
has precedence.
When not serving Swagger UI from the root, use swaggerui.WithPrefix
to match the sub path accordingly:
mux := http.NewServeMux()
mux.Handle("/swagger-ui/", swaggerui.New(
swaggerui.WithPrefix("/swagger-ui/"),
).Handler())
http.ListenAndServe(":8080", mux)
Run the example code using go run ./example
and point your browser to http://localhost:8080/swagger-ui.