我正在尝试使用Rikulo流,当我想从客户端向服务器发送数据时,我遇到了一些麻烦。 假设我有一个注册表单,我想发送一个请求来检查我的数据库中是否已存在该用户名。 我已经采用了MVC模式,所以我希望控制器接收数据,然后使用dao类检查用户名是否存在。
在客户端,我有这行代码
InputElement username = query('#username');
document.query("#submit").onClick.listen((e) {
HttpRequest request = new HttpRequest();
var url = "/check-existing-username";
request.open("POST", url, async:true);
request.setRequestHeader("Content-Type", "application/json");
request.send(stringify({"user": username.value}));
});
这是发送数据的正确方法吗?
这是我的服务器端代码
void main(){
Controller controller = new Controller();
var _mapping = {
"/": controller.home,
"/home": controller.home,
"/check-existing-username" : controller.checkUsername
};
new StreamServer(uriMapping: _mapping).start();
我的控制器方法
void checkUsername(HttpConnect connect) {
//How to access data received from client?
}
已经定义了dao类,所以我只想知道如何访问数据。
我希望有人可以帮助我。
答案 0 :(得分:1)
由于您正在使用POST,因此JSON数据将位于HTTP请求的正文中。你可以在那里找回它。 Rikulo Commons有一个名为readAsJson的实用程序。您可以按如下方式使用它。
import "package:rikulo_commons/convert.dart";
Future checkUsername(HttpConnect connect) {
return readAsJson(connect.request).then((Map<String, String> data) {
String username = data["user"];
//...doa...
});
}
请注意,读取请求的正文是异步的,因此您必须返回一个Future实例来指示它何时完成。