如何从请求中获取原始字节?打电话给request.body.asBytes()
我收到这条消息:
asBytes() expected list of bytes, instead got List<_InternalLinkedHashMap<String, dynamic>>
我看到HTTPRequestBody
有在这种情况下使用的属性retainOriginalBytes
,但是我在哪里设置它?
谢谢!
无论您在请求中遇到什么端点,都会在其正文中返回一个 Map,而不是一个字节列表。
我不确定您是否可以控制该端点返回的内容,但如果可以的话,那将是更改它的地方。
查看BytesBuilder类。此外,请阅读 Aqueduct 文档以获取请求和响应对象。希望这能让你走上正确的道路!
你走在正确的轨道上;一旦设置retainOriginalBytes
为 true,这将正常工作。这必须在身体被解码之前完成。
在HTTPController
中,请求正文在调用处理请求的方法之前被解码。就在解码之前,HTTPController
调用它的willDecodeRequestBody()
方法。默认情况下,此方法不执行任何操作,但您可以将其覆盖为 set retainOriginalBytes
:
@override
void willDecodeRequestBody(HTTPRequestBody body) {
body.retainOriginalBytes = true;
}
这是执行此操作的应用程序示例。