如何在ktor客户端中为http请求的url添加参数



我有问题添加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
}
}

相关内容

  • 没有找到相关文章

最新更新