我有问题添加url参数到我的http请求与ktor客户端。
在我的nodeJS后端,我期待url与路径变量在url如下:
// plants.route.ts
this.router.delete('/plants/delete/:id', this.plantsController.delete);
我按照ktor客户端文档向我的http请求url添加参数,如下所述:https://ktor.io/docs/request.html所以我的代码现在看起来像这样:
// HttpRoutes.kt
const val deletePlantRoute = "$backendUrl/plants/delete"
// PlantApiImplementation.kt
override suspend fun deletePlant(plantId: String): DeletePlantResponseDTO? {
return try {
client.delete {
url(HttpRoutes.deletePlantRoute)
parameter("id", plantId)
contentType(ContentType.Application.Json)
}
} catch (error: Exception) {
return null
}
}
但是请求没有到达我的后端。
到目前为止,我已经尝试了以下So线程的解决方案:
Ktor中URL生成器的示例
如何向Ktor android传递查询参数
所以在做了一些挖掘和重新观看关于ktor客户端的youtube教程后,我意识到我混淆了文档中的query
参数和path
参数。
https://youtu.be/3KTXD_ckAX0?t = 683
最后的工作是简单地在我的api调用中直接构建url,像这样:
// PlantApiImplementation.kt
override suspend fun deletePlant(plantId: String): DeletePlantResponseDTO? {
return try {
client.delete {
// build the url directly with the needed params here
url(HttpRoutes.deletePlantRoute + "/" + plantId)
contentType(ContentType.Application.Json)
}
} catch (error: Exception) {
return null
}
}