使用openapi-generator生成API文档遇问题:未生成文档端点
问题描述
我正在试用OpenAPI Generator,现有一份示例openapi.yaml文件:
openapi: 3.1.0 info: title: Sample API description: My amazing description. version: 0.0.9 servers: - url: http://localhost:8080/v1 description: My amazing server description. paths: /users: get: summary: Returns a list of all users. description: My amazing /users endpoint description. responses: "200": description: (OK) A JSON array of user objects. content: application/json: schema: type: array items: type: string
我执行了以下生成命令:
openapi-generator-cli generate -g go-gin-server --global-property=apiDocs=true -i ./openapi.yaml
无论是否添加--global-property=apiDocs=true参数,生成的Gin服务器都没有/api、/doc或/docs这类文档端点。服务器本身运行正常,能通过curl访问定义好的/users接口,请问问题出在哪?
解决方法
针对go-gin-server生成器,启用文档端点需要注意以下几点:
升级OpenAPI Generator版本
旧版本的go-gin-server生成器可能不支持apiDocs全局属性,建议升级到最新稳定版:openapi-generator-cli version-manager set latest使用正确的组合参数
go-gin-server生成器启用文档需要同时指定两个参数,仅加apiDocs=true不足以触发文档端点生成:openapi-generator-cli generate -g go-gin-server --global-property=apiDocs=true --additional-properties=enableGinOpenApi=true -i ./openapi.yaml验证生成的路由代码
生成后检查routers/router.go文件,确认是否包含OpenAPI规范的路由代码,比如:// Serve OpenAPI spec r.GET("/openapi.json", gin.WrapH(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") _, _ = w.Write([]byte(swaggerJson)) })))若存在该代码,启动服务器后可通过
/openapi.json获取OpenAPI规范,再自行搭配Swagger UI等工具展示可视化文档。手动添加Swagger UI端点(可选)
若需要直接提供可视化文档页面,可在生成的代码中手动添加静态文件服务:import "github.com/gin-contrib/static" // 在路由初始化处添加 r.Use(static.Serve("/docs", static.LocalFile("./swagger-ui", true)))之后将Swagger UI的静态文件放在项目根目录的
swagger-ui文件夹中,即可通过/docs访问文档页面。
内容的提问来源于stack exchange,提问作者dow
相关产品推荐
相关产品推荐

