实现思路
- 在路由定义中获取路径参数商品ID。
- 对获取到的商品ID进行有效性验证,判断是否为正整数。
- 如果验证不通过,返回合适的HTTP错误响应,例如
HttpStatusCode.BadRequest
。
- 如果验证通过,执行获取商品详情的逻辑。
代码实现
import io.ktor.application.*
import io.ktor.http.*
import io.ktor.response.*
import io.ktor.routing.*
fun Application.module() {
routing {
get("/product/{productId}") {
val productIdParam = call.parameters["productId"]
if (productIdParam == null || !isValidProductId(productIdParam)) {
call.respond(HttpStatusCode.BadRequest, "Invalid product ID")
} else {
val productId = productIdParam.toInt()
// 执行获取商品详情的逻辑,这里假设存在getProductDetails函数
val productDetails = getProductDetails(productId)
call.respond(productDetails)
}
}
}
}
private fun isValidProductId(id: String): Boolean {
return try {
val productId = id.toInt()
productId > 0
} catch (e: NumberFormatException) {
false
}
}
// 假设的获取商品详情函数
private fun getProductDetails(productId: Int): String {
return "Product details for ID $productId"
}