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

标签 kotlin swagger swagger-ui ktor projekktor

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

最佳答案

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

  1. 在资源目录中创建"file"目录

  2. 使用下一个代码从"file"目录路由静态文件

    routing {
        static("/static") {
            resources("files")
        }
        //...
    }
    
  3. 给json文件命名“test.json”,然后放到“files”文件夹中

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

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

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

  2. 然后使用下面的代码

    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

关于kotlin - Swagger-UI和Ktor如何导入swagger.json或.yaml文件启动Swagger-UI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59663420/

相关文章:

kotlin - defer() 和 defer{} 有什么区别

android - 如何在Kotlin中删除ClipboardManager的OnPrimaryClipChangedListener?

java - 使用 Application 子类时,Swagger 不显示 Jersey 的 @Api 注释

c# - 如何默认打开 Swagger/index 而不是 Index.html

kotlin - Kotlin 合约能否/会表达已删除的类型含义?

kotlin - 将 CSV 解析为 Kotlin 列表

javascript - 如何配置安全性以允许仅通过 nodejs 中的身份验证访问 swagger url

swagger - 如何在 OpenAPI (Swagger) 中指定多个 404 原因?

java - Springfox Swagger命令属性如何配置?

c# - 在 Swagger UI 中显示 HTTP 请求持续时间