Skip to content

OpenAPI Introduction

Nika plans to provide built-in OpenAPI documentation generation.

Planned Design

//Swagger decorators via struct tags
type UserController struct {

    List func(*gin.Context) `route:"GET:/users"`
}
func NewUserController(service *UserService) *UserController {
     ctrl := &UserController{service: service}
     ctrl.List=ListHandler
    return ctrl
}

// @Summary Get all users
// @Description Returns a list of users
// @Tags users
// @Accept json
// @Produce json
// @Success 200 {array} User
// @Router /users [get]
func (ctrl *UserController) ListHandler(c *gin.Context) {
    users := ctrl.service.FindAll()
    c.JSON(http.StatusOK, users)
}

Current Alternative

Use swaggo/swag with Gin:

nika swagger init


nika swagger init --dir ./cmd --output ./api/docs


nika swagger init --parseDependency --parseInternal --parseDepth 200

nika run --watch
import (
    _ "NikaSamole/docs"
    "github.com/nika-framework/nika/common/swagger"
)
// @title Nika API
// @version 1.0
// @description My Nika API
// @host localhost:3000
// @BasePath /
func main() {
    app := nika.NewApp()

    swagger.Setup(app,swagger.Config{
        Path:"swagger/*any"
    })
    // ...
}

Status

Feature Status
Auto-generated Swagger docs ⏳ Planned
Decorator-based API docs ⏳ Planned
API response examples ⏳ Planned

Want to contribute?

OpenAPI support is open for contribution.