无法在 GET 请求中访问表单数据
Posted
技术标签:
【中文标题】无法在 GET 请求中访问表单数据【英文标题】:Cannot access form data in GET request 【发布时间】:2019-12-30 22:37:33 【问题描述】:我一直在尝试向 ktor 路由中定义的端点发出 GET 请求,但无论我如何尝试获取参数,这些参数似乎都丢失了。根据文档,我应该可以调用call.receive<Parameters>()
,这应该会产生一个包含数据的地图,但它总是空的。
到目前为止,我已经尝试安装自己的 ContentNegotiator(从未调用过 convertForReceive
方法),访问 queryParams(也始终为空),并使用始终为空的 call.receiveParameters()
方法
我的 CURL 请求看起来像
curl -X GET \
http://localhost:7802/api/v2/plans \
-H 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode "id[starts_with]=asdf"
我的端点看起来像
fun Routing.plans()
route("plans")
get("")
val params = call.receive<Parameters>()
println(params)
call.respond(HttpStatusCode.NoContent)
我希望参数包含 something,但它们始终为空。
【问题讨论】:
【参考方案1】:我认为您将无法使用带有GET
请求的正文。使用该 HTTP 动词,大多数服务器无法识别正文。如果您想发送正文,我建议您尝试将您的GET
请求更改为POST
。
我认为这应该能让你到达你需要去的地方。
【讨论】:
欢迎来到这里 :) 你觉得呢。猜测或知道吗? 谢谢!我知道我无法在 GET 请求中使用来自 ktor 项目的 swagger api 自动生成的代码中的主体参数,所以我认为这听起来与 OP 遇到的问题相同。所以我希望这对他有帮助:)。以上是关于无法在 GET 请求中访问表单数据的主要内容,如果未能解决你的问题,请参考以下文章
10.对于HTTP的POST请求方式,用户提交的表单数据位于HTTP请求的哪一部分? b a) 请求头中 …………………