В теле ответа HTTP есть кавычки с сервера Dart Aqueduct

Когда такой ответ возвращается от контроллера Aqueduct

return Response.ok('hello');

тело ответа заключено в кавычки:

"hello"

То же самое, когда я возвращаю такую ​​строку JSON:

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

Я получаю это:

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

что мешает синтаксическому анализу JSON на стороне клиента.

Есть ли способ не отправлять кавычки?


person Suragch    schedule 26.04.2019    source источник


Ответы (1)


ContentType по умолчанию для ответа уже является JSON. Если вы хотите отправить плоский текст, вам нужно установить тип контента на обычный текст.

// import 'dart:io';

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

Тело ответа будет

hello

Чтобы отправить JSON, просто отправьте карту, а не конвертируйте ее в строку самостоятельно:

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

Это даст тело ответа

{"token":"eyJhbGc...vCxdE"}

Смотрите также

Кредит

Спасибо Джо Конвею на Канал Aqueduct Slack за помощь в решении этой проблемы. Я добавляю решение здесь в виде вопросов и ответов, чтобы другим было легче найти его.

person Suragch    schedule 26.04.2019