Server Plugin
Swagger UI
所需依赖项: io.ktor:ktor-server-swagger
代码示例: json-kotlinx-openapi
原生服务器支持: ✖️ Ktor 支持 Kotlin/Native,允许您在没有额外运行时或虚拟机的情况下运行服务器。
Ktor 允许您基于现有 OpenAPI 规范为项目生成并提供 Swagger UI。借助 Swagger UI,您可以可视化 API 资源并与之交互。
以下工具可用于从代码生成 OpenAPI 定义,反之亦然:
- IntelliJ IDEA 的 Ktor 插件 提供了为服务器端 Ktor 应用程序生成 OpenAPI 文档的能力。
- OpenAPI 生成器 允许您使用 kotlin-server 生成器从 API 定义创建 Ktor 项目。或者,您可以使用 IntelliJ IDEA 的功能性。
添加依赖项
提供 Swagger UI 需要在构建脚本中添加 ktor-server-swagger
构件:
Kotlin
Groovy
XML
配置 Swagger UI
要提供 Swagger UI,您需要调用 swaggerUI 方法,该方法会在 path
上创建一个 GET
端点,其 Swagger UI 是从位于 swaggerFile
的 OpenAPI 规范渲染而来的:
kotlin
import io.ktor.server.plugins.swagger.*
// ...
routing {
swaggerUI(path = "swagger", swaggerFile = "openapi/documentation.yaml")
}
此方法尝试在应用程序资源中查找 OpenAPI 规范。否则,它会尝试使用 java.io.File
从文件系统读取 OpenAPI 规范。
(可选)您可以在 swaggerUI
代码块内部定制 Swagger UI。例如,您可以使用另一个 Swagger UI 版本或应用自定义样式。
kotlin
routing {
swaggerUI(path = "swagger", swaggerFile = "openapi/documentation.yaml") {
version = "4.15.5"
}
}
现在,您可以运行应用程序并打开 /swagger
页面,以查看可用的端点并测试它们。
配置 CORS
为了确保您的 API 与 Swagger UI 良好协作,您需要为跨域资源共享 (CORS) 设置策略。以下示例应用了以下 CORS 配置:
anyHost
启用来自任何主机的跨域请求;allowHeader
允许在内容协商中使用的Content-Type
客户端标头。
kotlin
install(CORS) {
anyHost()
allowHeader(HttpHeaders.ContentType)
}