- 查询参数(Query Parameters):查询参数是在URL中以
?
分隔的键值对。您可以使用call.parameters
映射来访问查询参数。例如:
get("/login") {
val username = call.parameters["username"]
val password = call.parameters["password"]
call.respondText("用户名:$username, 密码:$password")
}
要测试这个路由,您可以向服务器发送带有查询参数的GET请求。例如:
http://localhost:8080/login?username=johndoe&password=mypassword
- 表单参数(Form Parameters):表单参数是通过HTTP POST请求提交的表单数据。您可以使用
call.receiveParameters()
函数来访问表单参数。例如:
post("/login") {
val parameters = call.receiveParameters()
val username = parameters["username"]
val password = parameters["password"]
call.respondText("用户名:$username, 密码:$password")
}
要测试这个路由,您可以使用HTTP客户端向服务器发送POST请求,并在请求正文中包含表单数据。例如,使用cURL命令行工具:
curl -X POST -d 'username=johndoe&password=mypassword' http://localhost:8080/login
3.您可以使用Ktor的参数路由功能来实现这一点。首先,您可以定义一个带有参数的路由:
get("/login/{username}/{password}") {
val username = call.parameters["username"]
val password = call.parameters["password"]
call.respondText("用户名:$username, 密码:$password")
}
在这个例子中,我们使用了一个参数路由,它将请求的URL路径中的{username}
和{password}
占位符映射到call.parameters
映射中的相应值。然后,我们在响应中使用这些值来显示用户名和密码。
要测试这个路由,您可以像这样向服务器发送带有用户名和密码参数的GET请求:
http://localhost:8080/login/johndoe/mypassword
这将返回一个响应,其中包含用户名和密码。
4.您可以使用Ktor的内容协商功能来解析请求正文中的JSON数据。下面是一个示例:
import io.ktor.application.*
import io.ktor.request.*
import io.ktor.response.*
import io.ktor.routing.*
import kotlinx.serialization.Serializable
import kotlinx.serialization.decodeFromString
import kotlinx.serialization.json.Json
@Serializable
data class LoginRequest(val username: String, val password: String)
fun Application.configureRouting() {
routing {
post("/login") {
val loginRequest = call.receive<LoginRequest>()
val username = loginRequest.username
val password = loginRequest.password
call.respondText("用户名:$username, 密码:$password")
}
}
}
在这个例子中,我们定义了一个LoginRequest
数据类,它包含了请求中的用户名和密码。然后,我们在POST /login
路由的处理程序中使用call.receive
函数将请求正文反序列化为LoginRequest
对象。最后,我们使用这些值来响应请求。
要测试这个路由,您可以使用HTTP客户端向服务器发送POST请求,并在请求正文中包含JSON数据。例如,使用cURL命令行工具:
curl -X POST -H "Content-Type: application/json" -d '{"username": "johndoe", "password": "mypassword"}' http://localhost:8080/login
这将返回一个响应,其中包含用户名和密码。注意,此示例仅用于演示目的,生产环境中应该使用安全的方法来处理用户凭据。