什么是 Body 解析器?
HTTP PUT 或 POST 请求含有一个请求体(Body). 请求体可以使用任何格式, 只要在请求头中指定相应的 Content-Type
即可. 在 Play 中, 一个 Body 解析器 转换请求体为对应的 Scala 值.
然而,HTTP 请求体可能非常的大,这时候 Body 解析器 不可能在解析之前光等着把数据全部加载到内存. BodyParser[A]
是个基本的 Iteratee[Array[Byte],A]
, 这就是说它一块一块的接收数据 (只要 Web 浏览器在上传数据) 并计算出类型为 A 的值作为结果.
让我们考虑一下几个例子.
- 一个文本型 Body 解析器能够把逐块的字节数据连缀成一个字符串, 并把计算得到的字符串作为结果 (
Iteratee[Array[Byte],String]
). - 一个文件型 Body 解析器能够把逐块的字节数据存为一个本地文件, 并以
java.io.File
引用作为结果 (Iteratee[Array[Byte],File]
). - 一个 s3 型 Body 解析器能够把逐块的字节数据推送给 Amazon S3 并以 S3 对象 ID 作为结果 (
Iteratee[Array[Byte],S3ObjectId]
). 阅读全文 >>