无法在 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 请求中访问表单数据的主要内容,如果未能解决你的问题,请参考以下文章

django 表单

在Express中get,post获取表单请求数据

Laravel 无法检索保存在 POST 请求中的会话数据

表单提交中get和post方式的区别

Javaweb开发请求

10.对于HTTP的POST请求方式,用户提交的表单数据位于HTTP请求的哪一部分? b a) 请求头中 …………………