Skip to content

go-openapi-ui is an embedded OpenAPI/Swagger documentation ui for Go using OpenAPI-UI

License

Notifications You must be signed in to change notification settings

openapi-ui/go-openapi-ui

Folders and files

NameName
Last commit message
Last commit date
May 6, 2024
May 11, 2024
Oct 11, 2024
Nov 11, 2024
Apr 22, 2024
May 11, 2024
May 6, 2024
May 11, 2024
Nov 11, 2024
Nov 11, 2024

Repository files navigation

go-openapi-ui

go-openapi-ui is an embedded OpenAPI documentation ui for Go using OpenAPI-UI and Go's 1.17+'s embed package, with middleware implementations for: net/http, gin, fiber, and echo.

The template is based on the OpenAPI-UI bundle.js with the script already placed in the html instead of depending on a CDN.

This package does not generate openapi spec file. Check this example for using code generation with swag.

Usage

import "github.com/openapi-ui/go-openapi-ui/pkg/doc"

...

doc := doc.Doc{
    Title:       "Example API",
    Description: "Example API Description",
    SpecFile:    "./openapi.json", // "./openapi.yaml"
    SpecPath:    "/openapi.json",  // "/openapi.yaml"
    DocsPath:    "/docs",
    Theme:       "light", // default is light, support light or dark
}
  • net/http
import (
	"net/http"
	"github.com/openapi-ui/go-openapi-ui/pkg/doc"
)

...

http.ListenAndServe(address, doc.Handler())
  • gin
import (
	"github.com/gin-gonic/gin"
	"github.com/openapi-ui/go-openapi-ui/pkg/doc"
	ginopenapiui "github.com/openapi-ui/go-openapi-ui/pkg/middleware/gin"
)

...

r := gin.New()
r.Use(ginopenapiui.New(doc))
  • echo
import (
	"github.com/labstack/echo/v4"
	"github.com/openapi-ui/go-openapi-ui/pkg/doc"
	echoopenapiui "github.com/openapi-ui/go-openapi-ui/pkg/middleware/echo"
)

...

r := echo.New()
r.Use(echoopenapiui.New(doc))
  • fiber
import (
	"github.com/gofiber/fiber/v2"
	"github.com/openapi-ui/go-openapi-ui/pkg/doc"
	fiberopenapiui "github.com/openapi-ui/go-openapi-ui/pkg/middleware/fiber"
)

...

r := fiber.New()
r.Use(fiberopenapiui.New(doc))

See examples

Thanks

LICENSE

MIT