【问题标题】:Cannot access form data in GET request无法在 GET 请求中访问表单数据
【发布时间】: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,但它们始终为空。

【问题讨论】:

    标签: kotlin ktor


    【解决方案1】:

    我认为您将无法使用带有GET 请求的正文。使用该 HTTP 动词,大多数服务器无法识别正文。如果您想发送正文,我建议您尝试将您的GET 请求更改为POST

    我认为这应该能让你到达你需要去的地方。

    【讨论】:

    • 欢迎来到这里 :) 你觉得呢。猜测或知道吗?
    • 谢谢!我知道我无法在 GET 请求中使用来自 ktor 项目的 swagger api 自动生成的代码中的主体参数,所以我认为这听起来与 OP 遇到的问题相同。所以我希望这对他有帮助:)。
    猜你喜欢
    • 2018-02-01
    • 2021-07-07
    • 1970-01-01
    • 2020-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-21
    • 1970-01-01
    相关资源
    最近更新 更多