用途
本技能面向使用 Kotlin 与 Ktor 构建 HTTP 服务端的开发场景,提供一套可复用的服务端模式,帮助开发者组织路由、插件、认证、依赖注入、序列化、WebSocket 与测试代码。当需要构建 Ktor HTTP 服务端、配置 Ktor 插件(Auth、CORS、ContentNegotiation、StatusPages)、实现 REST API、使用 Koin 设置依赖注入、使用 testApplication 编写集成测试,或在 Ktor 中使用 WebSockets 时,可参考本技能。
主要能力
应用结构
提供标准的 Ktor 项目布局,将入口点、插件配置、路由、模型、服务、仓库与依赖注入模块分层组织。入口点通过 embeddedServer 启动 Netty,并在 Application.module 中依次调用序列化、认证、StatusPages、CORS、依赖注入与路由的配置函数。
路由 DSL
展示基础路由写法,包括 GET、POST、PUT、DELETE 以及路径参数处理,并演示如何通过 authenticate("jwt") 将受保护路由与公开路由组织在同一 route 块内。
内容协商与序列化
使用 kotlinx.serialization 配置 ContentNegotiation,提供 Json 配置项(prettyPrint、isLenient、ignoreUnknownKeys、encodeDefaults、explicitNulls)。给出可序列化模型示例,包括 UserResponse、CreateUserRequest、ApiResponse 与 PaginatedResponse,并演示自定义序列化器 InstantSerializer。
认证
提供 JWT 认证配置示例,从配置读取 secret、issuer、audience、realm,使用 HMAC256 构建 verifier,并通过 validate 返回 JWTPrincipal。同时给出从 JWT 提取 userId 的扩展函数,以及登录、注册、获取当前用户资料的认证路由示例。
错误处理
通过 StatusPages 插件统一处理 ContentTransformationException、IllegalArgumentException、AuthenticationException、AuthorizationException、NotFoundException 与通用 Throwable,并处理 404 状态。
CORS 配置
演示 allowHost、allowHeader、allowMethod、allowCredentials 与 maxAgeInSeconds 的配置方式。
Koin 依赖注入
提供模块定义示例,将 Database、Repository、Service 以 single 方式注册,并在路由中通过 inject 获取实例。同时展示在测试中使用 KoinExtension 与 mockk 替换依赖的方式。
请求校验
演示在路由中直接使用 require 校验请求字段,或通过扩展函数集中校验。
WebSockets
提供 WebSockets 插件配置(pingPeriod、timeout、maxFrameSize、masking),并给出聊天路由示例,使用同步集合管理连接、遍历 incoming 帧、广播消息,并在 finally 中移除连接。
testApplication 测试
展示使用 testApplication 测试路由的基本写法,包括安装 Koin 测试模块、配置序列化与 StatusPages、使用 client 发起请求并断言状态码与响应体。同时展示受保护路由的 JWT 测试方式。
使用方式
资料以代码示例形式呈现各模式,开发者可按需将对应片段应用到自己的 Ktor 项目中。示例涵盖从项目结构到具体插件配置、路由实现与测试的完整流程。
适用场景
适用于使用 Kotlin 协程构建 Ktor HTTP 服务端、实现 REST API、配置认证与 CORS、集成 Koin 依赖注入、使用 kotlinx.serialization 序列化、实现 WebSocket 通信以及编写集成测试的开发场景。
限制
资料未提供具体的安装命令、依赖版本、收费或价格信息、平台支持范围以及性能效果数据,这些内容暂未提供。