先确定/swagger路径是否要使用
如果要使用 /swagger 这个路径,需要关闭自带的 swagger,自带的级别比你的高,导致无法访问到你的swagger,除非你改名
这里采取关闭自带的
# demo/manifest/config/config.yaml
server:
address: ":8000"
openapiPath: "/api.json"
# swaggerPath: "/swagger" 关闭
logger:
level : "all"
stdout: true
demo
package main
import (
"context"
"fmt"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/net/ghttp"
)
const (
swaggerUIPageContent = `
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta
name="description"
content="SwaggerUI"
/>
<title>SwaggerUI</title>
<link rel="stylesheet" href="https://unpkg.com/swagger-ui-dist@4.5.0/swagger-ui.css" />
</head>
<body>
<div id="swagger-ui"></div>
<script src="https://unpkg.com/swagger-ui-dist@4.5.0/swagger-ui-bundle.js" crossorigin></script>
<script src="https://unpkg.com/swagger-ui-dist@4.5.0/swagger-ui-standalone-preset.js" crossorigin></script>
<script>
window.onload = () => {
window.ui = SwaggerUIBundle({
url: '/api.json',
dom_id: '#swagger-ui',
presets: [
SwaggerUIBundle.presets.apis,
SwaggerUIStandalonePreset
],
layout: "StandaloneLayout",
});
};
</script>
</body>
</html>
`
)
type HelloReq struct {
g.Meta `path:"/hello" method:"get"`
Name string `v:"required" dc:"Your name"`
}
type HelloRes struct {
g.Meta `mime:"text/html" example:"string"`
}
type Hello struct{}
func (Hello) Say(ctx context.Context, req *HelloReq) (res *HelloRes, err error) {
g.Log().Debugf(ctx, `receive say: %+v`, req)
g.RequestFromCtx(ctx).Response.Writeln(fmt.Sprintf("Hello World!%s", req.Name))
return
}
func main() {
s := g.Server()
s.Group("/", func(group *ghttp.RouterGroup) {
group.GET("/swagger", func(r *ghttp.Request) {
r.Response.Write(swaggerUIPageContent)
})
group.Bind(
new(Hello),
)
})
s.SetOpenApiPath("/api.json")
s.SetPort(8000)
s.Run()
}