Dart: получить параметры POST на стороне сервера

Я отправляю некоторые данные со стороны клиента, используя запрос POST

var value = new Map<String, String>();
value["param1"] = 'value1';
value["param2"] = 'value2';
value["param3"] = 'value3';

HttpRequest.postFormData('http://localhost:8080/', value);

и попробуйте получить эти данные на стороне сервера:

HttpServer.bind(InternetAddress.ANY_IP_V6, 8080).then((server) {
    server.listen((HttpRequest request) {
        //TODO: process POST request
    });
});

Но как я могу получить значения POST из запроса в виде Map?

обн 1

Но как я вижу результат

var jsonString = await request.transform(UTF8.decoder).join();

зависит от типа почтового сообщения. Если я изменю это, результат будет

многочастному / форм-данных,

------WebKitFormBoundaryoQQD7N0iA5zS8qmg
Content-Disposition: form-data; name="param1"

value 1
------WebKitFormBoundaryoQQD7N0iA5zS8qmg
Content-Disposition: form-data; name="param2"

value 2
------WebKitFormBoundaryoQQD7N0iA5zS8qmg
Content-Disposition: form-data; name="param3"

value 3
------WebKitFormBoundaryoQQD7N0iA5zS8qmg--

текст / обычный

param1=value 1
param2=value 2
param3=value 3

применение / х-WWW-форм-urlencoded

param1=value+1&param2=value+2&param3=value+3

Как я уже спрашивал, как я могу преобразовать его в Map?

1 ответ

Решение

Вот полный учебник https://www.dartlang.org/docs/tutorials/httpserver/

String jsonString = await request.transform(UTF8.decoder).join();

или же

Map result = await request.transform(UTF8.decoder).join().then(JSON.decode);

У меня тот же вопрос, и я не нашел никакого решения до сих пор. Мне нужно передать карту от клиента к серверу и серверу, чтобы использовать эту карту для опроса базы данных mongodb. Клиент отправляет эту карту, но сервер получает строку. Любое преобразование в json возвращает также строку, а не карту. На стороне клиента я отправляю карту с именем query:

await HttpRequest.postFormData('http://localhost:8085/$_coll',query).then((HttpRequest response) 

На стороне сервера:

if (request.method == 'POST') {

   query = await request.transform(utf8.decoder).join();
}

Я пытался кодировать / декодировать в JSON, но безуспешно.

Другие вопросы по тегам