使用API​​在HTML(Swagger UI)中显示swagger api规范(json)

时间:2019-04-06 14:41:32

标签: go swagger-2.0

我有去服务(大猩猩/多路复用器)的特定端口。我也以json文件的形式有一个庞大的API规范。是否有任何go API可以像春季启动一样从JSON文件生成醒目的UI定义。 我正在查看https://github.com/go-swagger/go-swagger,但无法在go-lang代码中使用它。看来该API只能在命令行中使用。

3 个答案:

答案 0 :(得分:2)

如果您已经以YAML或JSON格式定义了API,则可以使用静态的“ dist”树从浏览器中进行渲染:

https://github.com/swagger-api/swagger-ui/tree/master/dist

通过以下标记更新index.html以指向您的API文档:

url: "https://petstore.swagger.io/v2/swagger.json",

如果要从go REST-API服务器提供此静态树,请添加以下处理程序:

fs := http.FileServer(http.Dir("dist"))
http.Handle("/swagger/", http.StripPrefix("/swagger/", fs))

这将为/swagger/路线之外的所有swaggers文档提供服务-从dist目录中读取内容。

答案 1 :(得分:0)

这里是使用静态dist代码的替代方法

SwaggerUI有一个URL参数,您可以提供自己的swagger.json,它将使用您的定义呈现UI,下面是一个示例:

http://petstore.swagger.io/?url=http://swagger-net-test.azurewebsites.net/swagger/docs/V1

如您所见,除了您自己的摇摇欲坠的规格和互联网访问之外,您实际上不需要任何其他东西

答案 2 :(得分:0)

对于自包含应用程序的情况(可能需要限制对外部网络的访问),有一个提供 Swagger UI 作为 HTTP 处理程序的库:https://github.com/swaggest/swgui。您只需将其插入路由器即可。

package main

import (
    "net/http"

    "github.com/swaggest/swgui/v3"
)

func main() {
    http.Handle("/", v3.NewHandler("My API", "/swagger.json", "/"))
    http.ListenAndServe(":8080", nil)
}