MST

星途 面试题库

面试题:Kotlin中Ktor框架如何处理请求参数

在使用Kotlin与Ktor框架构建REST API时,假设我们有一个GET请求,需要接收多个查询参数。请描述如何在Ktor中定义路由并获取这些参数,同时展示如何对参数进行基本的类型检查和转换。
34.4万 热度难度
编程语言Kotlin

知识考点

AI 面试

面试题答案

一键面试
  1. 定义路由并获取参数: 在Kotlin的Ktor框架中,使用get方法定义GET请求的路由,并通过call.parameters获取查询参数。例如:
    routing {
        get("/example") {
            val param1 = call.parameters["param1"]
            val param2 = call.parameters["param2"]
            //... 获取更多参数
        }
    }
    
  2. 参数的类型检查和转换
    • 转换为Int类型
      routing {
          get("/example") {
              val param1 = call.parameters["param1"]?.toIntOrNull()
              if (param1 == null) {
                  call.respond(HttpStatusCode.BadRequest, "param1 should be an integer")
                  return@get
              }
              // 可以安全地使用param1,类型为Int
          }
      }
      
    • 转换为Double类型
      routing {
          get("/example") {
              val param2 = call.parameters["param2"]?.toDoubleOrNull()
              if (param2 == null) {
                  call.respond(HttpStatusCode.BadRequest, "param2 should be a double")
                  return@get
              }
              // 可以安全地使用param2,类型为Double
          }
      }
      
    • 转换为其他类型类似,例如Boolean
      routing {
          get("/example") {
              val param3 = call.parameters["param3"]
              if (param3 != null && (param3.equals("true", ignoreCase = true) || param3.equals("false", ignoreCase = true))) {
                  val boolParam = param3.equals("true", ignoreCase = true)
                  // 可以安全地使用boolParam,类型为Boolean
              } else {
                  call.respond(HttpStatusCode.BadRequest, "param3 should be a boolean (true or false)")
                  return@get
              }
          }
      }