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¶m2=value+2¶m3=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, но безуспешно.