我在Play 2.0中使用Scala,每当将大数据(超过100KB)发布到特定端点时,我就会收到413错误。它使用anyContent解析器,对这个特定的API使用任何其他解析器是不合理的。
Stack Overflow还有其他一些问题,说明如何增加文本或JSON请求的最大POST大小。我如何为anyContent执行此操作,或者仅在项目范围内增加限制?
TL; DR为你的parsers.text.maxLength = 512k
添加application.conf
或任何大小
更新:发现在official documentation
它实际上记录在API中,虽然它需要一些挖掘来实际找到它。
展开DEFAULT_MAX_TEXT_LENGTH表示可以通过在parsers.text.maxLength
中设置application.conf
来配置文本数据的最大大小。查看源本身,默认值为100Kb,因此这很可能是您需要设置的。
在一个有点相关的说明中,我们还有maxLength
方法可用于任何BodyParser,这意味着对于非文本数据,除非您应用该方法,否则没有上限。实际上,我们可以将它应用于AnyContent解析器,如下所示:
def foo = Action(parse.maxLength(512 * 1024, parser = parse.anyContent)) { implicit req =>
req.body match {
case Left(_) => EntityTooLarge
case Right(body) => Ok("This is totally not too large")
}
}
注意那些使用原始解析器的人,最大值作为参数:
动作(parse.raw(10000 * 1024))
有关更多详细信息,请参阅parse.raw方法。