Swagger-UI 和 Ktor 如何导入 swagger.json 或 .yaml 文件并启动 Swagger-UI?

Posted

技术标签:

【中文标题】Swagger-UI 和 Ktor 如何导入 swagger.json 或 .yaml 文件并启动 Swagger-UI?【英文标题】:Swagger-UI and Ktor how to import swagger.json or .yaml file and start Swagger-UI? 【发布时间】:2020-04-27 00:37:30 【问题描述】:

我有一个问题,我已经生成了 OpenApi Swagger 文件(swagger.json 和 swagger.yaml)是否可以在 Ktor(kotlin)中以某种方式导入这些文件并在特定路径上启动 swagger-ui 服务器? 我已经访问过ktor-swagger project,但可以了解如何添加 json 文件来显示 swagger-ui。 有什么建议 ?

【问题讨论】:

【参考方案1】:

让您可以从静态路由访问 json 文件

    在资源目录中创建“文件”目录

    使用下一个代码从“文件”目录路由静态文件

    routing 
        static("/static") 
            resources("files")
        
        //...
    
    

    让我们把json文件命名为“test.json”,然后把它放到“files”文件夹中

所以现在你运行应用程序并通过 http://localhost:8080/static/test.json 看到这个文件

然后我们需要安装和配置OpenApiGen

    添加 OpenApiGen 依赖项,您可以在此处找到操作方法https://github.com/papsign/Ktor-OpenAPI-Generator

    然后使用下面的代码

    install(OpenAPIGen) 
        serveSwaggerUi = true
        swaggerUiPath = "/swagger-ui"
    
    

现在您可以使用 http://localhost:8080/swagger-ui/index.html?url=/static/test.json URL 通过 swagger UI 查看您的文件

另外,您可以提供自己的路线来使用重定向

get("/api") 
   call.respondRedirect("/swagger-ui/index.html?url=/static/test.json", true)

这将允许您只使用 http://localhost:8080/api

【讨论】:

以上是关于Swagger-UI 和 Ktor 如何导入 swagger.json 或 .yaml 文件并启动 Swagger-UI?的主要内容,如果未能解决你的问题,请参考以下文章

Kotlin/Native 无法导入 io.ktor.network.selector.ActorSelectorManager

如何让 KTOR Logging 在 Android 上编译?

我如何开始使用 swagger-ui [关闭]

如何在 Multiplatform Ktor 和 Coil 之间共享 HttpClient?

如何在 Ktor 中散列和验证密码?

IntelliJ 在新的 Ktor 项目中缺少对 slf4j 的引用