当前位置: 首页 > 知识库问答 >
问题:

根据Swagger/OpenAPI规范在Go中生成Swagger文档服务器

怀浩大
2023-03-14

我有一个OpenAPI规范,我使用了OpenAPI生成器来生成Golanggin服务器。

从OpenAPI规范生成Swagger documentation server的常规方法是什么?

我已经尝试过swag:它会在http://localhost:8080/swagger/index.html终点。但这需要在代码注释中描述API。我正在寻找一个来自OpenAPI规范的大摇大摆的UI生成器,我已经有了。

谢谢

共有3个答案

长孙智刚
2023-03-14

有一个库将Swagger UI打包为Gohttp。处理程序:https://github.com/swaggest/swgui.

package main

import (
    "net/http"

    "github.com/swaggest/swgui/v3emb" // For go1.16 or later.
    // "github.com/swaggest/swgui/v3" // For go1.15 and below.
)

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

“/swagger.json”在本例中是指向OpenAPI规范文件的URL。

池阳伯
2023-03-14

我对Gin不太确定,但我很高兴与大家分享我的解决方案(基于go server):

  1. 在项目根目录中创建一个名为./swagger-用户界面的目录
  2. 在swagger-用户界面(https://github.com/swagger-api/swagger-ui/tree/master/dist)dist/*下复制文件
  3. swagger-用户界面/index.html中将api规范的位置更新到url:"/api/openapi.yaml"
  4. main.go中创建一个新的变量,注释为//go: embed swagger-用户界面/*api/openapi.yaml(后者目录由openapi生成器CLI创建)
  5. main.go中的(生成的)路由器下面添加:router. PathPrefix("/"). Handler(http. FileServer(http. FS(staticFiles))

就这样——你将在 /swagger-用户界面下提供斯瓦格UI,并从 /api/openapi.yaml自动加载api定义

golang prettyprint-override">package main

import (
    "context"
    ...
)

//go:embed swagger-ui/* api/openapi.yaml
var staticFiles embed.FS

func main() {
    router := ....

    // Embed the Swagger UI within Go binary
    router.PathPrefix("/").Handler(http.FileServer(http.FS(staticFiles)))

    ...
田德运
2023-03-14

可以在docker容器中运行swagger editor。把它从https://hub.docker.com/r/swaggerapi/swagger-editor,运行它,将浏览器指向http://localhost:8080,然后加载api。yaml文件。您还可以运行swagger uihttps://hub.docker.com/r/swaggerapi/swagger-ui.

 类似资料:
  • 我在一个带注释的对象中有几个枚举,如: 其中枚举定义为: 使用Openapi3,我可以生成一个swagger文档。我的问题是,和,翻译方式不同,如: 我希望< code>Enum2与< code>Enum1一样被记录,因此具有实际的枚举值。有什么方法可以强制这样做,或者解释为什么会这样?两个枚举基本上与示例中的相同。

  • 我有一个Spring启动应用程序,使用springdoc-openapi启用了昂首阔步的留档。由于某种原因,有一个名为/application.wadl的终结点会自动创建,而不会添加任何逻辑。有没有办法禁用wadl终结点?我没有在application.yml文件中添加特定的Wadl配置

  • 支持在项目中使用 Swagger 注解语法,运行命令,生成 Swagger 文件。 Swagger 是最流行的 API 开发工具,它遵循 OpenAPI Specification(OpenAPI 规范,也简称 OAS)。 Swagger 可以贯穿于整个 API 生态,如 API 的设计、编写 API 文档、测试和部署。 Swagger 是一种通用的,和编程语言无关的 API 描述规范。 imi-

  • 我有yaml格式的OpenAPI3.0规范和从它生成代码的应用程序。一切工作都很好,除了生成昂首阔步的UI。我使用spring-fox来生成它,但它似乎从控制器生成了霸气的UI2.0版本,这些控制器是从openapi规范生成的。 我如何直接从3.0规范而不是从3.0openapi规范生成的控制器生成昂首阔步的ui?

  • 我使用了Swagger UI来显示我的REST Web服务,并将其托管在服务器上。 然而,这种招摇过市的服务只能在特定的服务器上访问。如果我想脱机工作,有人知道我如何使用Swagger UI创建静态PDF并使用它吗?此外,PDF很容易与无权访问服务器的人共享。 非常感谢!

  • 对于一些用PHP编写的REST API,我被要求创建Swagger文档,由于我不知道有什么简单的方法可以向现有的API添加注释并创建这样的文档,所以我现在使用这个编辑器来生成一些文档。