簡體   English   中英

如何使用Rikulo流將數據從客戶端發送到服務器

[英]How to send data from client to server using Rikulo stream

我正在嘗試使用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類已經定義,所以我只想知道如何訪問數據。

我希望有人可以幫助我。

由於您正在使用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實例以指示何時完成。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM