Http 响应正文包含来自 Dart Aqueduct 服务器的引号

Http response body has quote marks from Dart Aqueduct server

当像这样 return 来自 Aqueduct 控制器的响应时

return Response.ok('hello');

响应正文周围有引号:

"hello"

当我 return 一个像这样的 JSON 字符串时同样的事情:

return Response.ok('{"token":"$token"}');

我明白了:

"{\"token\":\"eyJhbG...soOFY8\"}"

这会扰乱客户端的 JSON 解析。

有什么办法可以不发送引号吗?

响应的默认 ContentType 已经是 JSON。如果要发送平面文本,则需要将内容类型设置为纯文本。

// import 'dart:io';

return Response.ok('hello')..contentType = ContentType.text;

响应正文将是

hello

要发送JSON,只需发送一个Map而不是自己将其转换为字符串:

return Response.ok({'token':token});

这将给出

的响应正文
{"token":"eyJhbGc...vCxdE"}

另见

信用

感谢 Joe Conway on the Aqueduct Slack channel 帮助解决这个问题。我在这里添加解决方案作为问答,以便其他人可以更容易地找到它。