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