从请求中获取原始字节

时间:2017-11-18 19:43:13

标签: dart aqueduct

我如何从请求中获取原始字节?致电request.body.asBytes()我收到此消息:

asBytes() expected list of bytes, instead got List<_InternalLinkedHashMap<String, dynamic>>

我看到HTTPRequestBody在这种情况下使用属性retainOriginalBytes,但我在哪里设置了它?

谢谢!

2 个答案:

答案 0 :(得分:0)

无论您在请求中遇到什么端点,都会在其正文中返回一个Map,而不是Bytes列表。

我不确定您是否可以控制该端点返回的内容,但如果可以,则可以更改它。

查看BytesBuilder课程。另外,请阅读Request and Response Objects的Aqueduct文档。希望这能让你走上正确的道路!

答案 1 :(得分:0)

你走在正确的轨道上;将retainOriginalBytes设置为true后,这将正常工作。这必须在解码主体之前完成。

HTTPController中,在调用处理请求的方法之前解码请求正文。在解码之前,HTTPController调用其willDecodeRequestBody()方法。默认情况下,此方法不执行任何操作,但您可以覆盖它以设置retainOriginalBytes

@override
void willDecodeRequestBody(HTTPRequestBody body) {
  body.retainOriginalBytes = true;
}

Here是执行此操作的应用程序的示例。