[英]How to handle a basic form submission with http4s?
我不敢相信这不在http4s 文档中,而且我能够在线挖掘的示例代码(经过足够长的时间发现UrlForm
类之后)对我不起作用。
相关的代码如下所示:
case req @ POST -> Root / "compose" =>
req.decode[UrlForm] { ps =>
println("ps.values: " + ps.values)
val content = ps.getFirstOrElse("content",
throw new IllegalStateException("No content given!"))
// Do something with `content`...
}
提交关联表单时,会IllegalStateException
。 ps.values
是一个空映射( Map()
)。
我可以看到(使用println
) Content-Type
是application/x-www-form-urlencoded
,正如预期的那样,我可以从浏览器的 Network 选项卡中看到请求“参数”(编码的表单值)正在正确发送.
问题是我有一个过滤器( javax.servlet.Filter
)在HttpServletRequest
上调用getParameterMap
。 这正在耗尽请求的InputStream
,并且它发生在请求传递到 servlet ( BlockingHttp4sServlet
) 实例之前。
在我看来,当BlockingHttp4sServlet
收到一个isFinished
返回 true 的InputStream
时,它应该引发IllegalStateException
(或更具描述性的isFinished
。 (我已经在 Github 上向 http4s 项目提交了一个问题。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.