4

我对飞镖编程非常陌生,感谢您的帮助。

void main() {
  var server = new HttpServer();
  server.listen('127.0.0.1', 8080);
  server.
  addRequestHandler(
  accept(HttpRequest function) => acceptInput(request, response), handler);
 }

我想将下面的函数添加到请求处理程序中。 server.addrequestHandler() 我想这样做,这样我就可以添加许多请求处理程序,包括一个用于 websockets 的示例或教程将非常有帮助。

为了简单起见,我想将每个处理程序保留在单独的函数中。

void acceptInput(HttpRequest request,HttpResponse response){
  print(request.connectionInfo.toString());
  print(request.queryParameters.toString());
  response.outputStream.write('Hello dude'.charCodes);
  response.outputStream.close();
}

注意:我知道我的 void 主代码是错误的,我需要帮助以使其正确,以便它包含 acceptInput 函数。

4

3 回答 3

3

事实上,你真的很亲近。

尝试这个:

  var server = new HttpServer();
  server.addRequestHandler(
      (req) => req.path == '/save',
      handleSave);
  server.addRequestHandler(
      (req) => req.path == '/delete',
      handleDelete);
  server.defaultRequestHandler = new StaticFileHandler(basePath).onRequest;

WherehandleSavehandleDeleteare 只是函数,例如:

handleSave(HttpRequest req, HttpResponse resp) {
  // ...
}
于 2012-12-05T05:51:54.760 回答
1

以下是提供文件和处理 Web 套接字连接的 Web 服务器的代码:

https://github.com/dart-lang/web-components-code-lab/blob/master/step04/bin/chat_server.dart

这是否回答你的问题?

于 2012-12-05T00:31:22.433 回答
1

您应该查看我的Express.dart实现,它是一个类似于 Express 的 Web 框架,适合单个文件,因此易于阅读。

查看HttpServer 文档以查看每种方法的正确签名。这是 addRequestHandler 的 API:

abstract addRequestHandler(
    bool matcher(HttpRequest request), 
    void handler(HttpRequest request, HttpResponse response)
)

第一个参数是这是否应该处理请求,而第二个参数是如果匹配器为真则处理请求的处理程序。

所以 Dart 中的 Http 应用程序看起来像:

var server = new HttpServer();

server.addRequestHandler(
   (HttpRequest req) => true, 
   acceptInput);

server.listen('127.0.0.1', 8080);
于 2012-12-05T00:45:07.157 回答