Dart:在服务器端获取 POST 参数

Dart: Get POST parameters on server side

我使用 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();

取决于 post 消息的类型。如果我更改它,结果将是

multipart/form-data

------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--

text/plain

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

application/x-www-form-urlencoded

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

正如我已经问过的,如何将其转换为 Map

这里有完整教程https://www.dartlang.org/docs/tutorials/httpserver/#handling-post

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

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

我也有同样的疑问,一直没找到解决办法。我需要将地图从客户端传递到服务器,然后服务器使用该地图查询 mongodb 数据库。客户端发送该地图,但服务器收到一个字符串。 json return 的任何转换也是字符串,而不是映射。 在客户端,我发送了一个名为查询的地图:

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

在服务器端:

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

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

我已经尝试 encode/decode 到 json,但没有成功。