BodyHandler允许您获取请求主体,限制body sizes和处理文件上传。
首先我们在路由处理的最开始添加BodyHandler.
router.route().handler(BodyHandler.create());
获取请求主体
如果你知道主体是JSON,你可以用getBodyAsJson,如果是String,你可以用getBodyAsString,或者将它作为缓冲区
getBody。
限制Body Sizes
我们可以使用setBodyLimit来指定Body的最大Size.这可以避免加载大文件耗尽内存。如果文件大于这个值,则会返回错误413.
默认情况下不存在限制。
合并表单属性
默认情况下,主体处理程序会把任何表单属性合并到请求参数中,如果你不需要,可以用setMergeFormAttributes.
处理文件上传
Body处理程序也用户处理多部分文件上传。
如果Body处理程序位于请求的匹配路径上,则任何文件上传都将会传送到上传目录,这是uploads默认情况下的操作。
每个文件会自动生成一个名称,可以用fileUploads获取上传文件。
如下:
router.route().handler(BodyHandler.create());
router.post("/some/path/uploads").handler(routingContext -> {
Set<FileUpload> uploads = routingContext.fileUploads();
// Do something with uploads....
});
FileUpload可以来描述上传文件的各种属性如名称,文件名,大小。