首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在带有http.ServeMux的GoLang lang中使用swaggo (swagger文档)?

如何在带有http.ServeMux的GoLang lang中使用swaggo (swagger文档)?
EN

Stack Overflow用户
提问于 2019-03-21 08:11:40
回答 1查看 1.3K关注 0票数 1

在文档中,https://github.com/swaggo/swag使用gin来初始化服务器,但在我的应用程序中,我使用了http.ServeMux,以及如何在不使用gin服务器的情况下初始化swaggo

在文档中使用

代码语言:javascript
复制
r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))

我如何使用像这样的东西..。

代码语言:javascript
复制
mu.Handle("/swagger/*any", swaggerFiles.Handler)

.

跟我最初的想法一样,但行不通...rsrs

代码语言:javascript
复制
func Server() *http.ServeMux {
    docs.SwaggerInfo.Title = "Swagger Example API"
    docs.SwaggerInfo.Description = "This is a sample server Petstore server."
    docs.SwaggerInfo.Version = "1.0"
    docs.SwaggerInfo.Host = "petstore.swagger.io"

    mu := http.NewServeMux()
    mu.Handle("/metrics", promhttp.Handler())
    mu.Handle("/swagger/*any", swaggerFiles.Handler)
    mu.HandleFunc("/helloWorld", handlers.NewHelloWorldHandler().HelloWorldHandler)
    mu.HandleFunc("/production/", handlers.NewProductionHandler().ProductionHandler)
    return mu
}
EN

回答 1

Stack Overflow用户

发布于 2019-03-21 09:02:59

如果您有为分发而构建的swagger文件(即静态文件),并且位于以下目录中:/some/dir/path/static/swagger

这应该适用于go的http路由器:

代码语言:javascript
复制
staticFilesPath := "/some/dir/path/static"
staticRoute := "/static/"

h := http.NewServeMux()

// static file handler for route '/static/*'
h.Handle(
    staticRoute,
    http.StripPrefix(
        staticRoute,
        http.FileServer(http.Dir(staticFilesPath)),
    ),
)

我发现添加以下内容也很有帮助:

代码语言:javascript
复制
// (redirect a route if not recognized - remove in production)
//
// unrecognized routes will redirect to Swagger API docs
h.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
    http.Redirect(w, r, staticRoute + "swagger/", http.StatusSeeOther)
})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55271956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档