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¶m2=value+2¶m3=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,但没有成功。
我使用 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¶m2=value+2¶m3=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,但没有成功。