使用dart提供示例网站

时间:2014-10-20 21:19:16

标签: dart dart-io

我刚刚开始学习dart,我想要做的就是通过一个简单的网络服务器来提供默认的Web应用程序。我将服务器存储在E:\DartProject\server,将Web客户端存储在E:\DartProject\WebClient。不幸的是我无法让服务器服务于webapp。网络服务器的代码是

import 'dart:io';
import 'package:http_server/http_server.dart' show VirtualDirectory;


VirtualDirectory virDir = new VirtualDirectory("E:\DartProject\WebClient\web");

void main() {
  HttpServer.bind(InternetAddress.ANY_IP_V4, 80).then((server) {
    print("Serving at ${server.address}:${server.port}");
    server.listen((request) {
      virDir.serveRequest(request);
    });
  });
}

我总是得到404错误。我做错了什么?

1 个答案:

答案 0 :(得分:2)

路径中的反斜杠可能被解释为转义字符?

尝试将"E:\DartProject\WebClient\web"更改为r"E:\DartProject\WebClient\web",这将指示Dart按字面解释整个字符串。

例如,如果您希望/提供/index.html,则还需要configure a "default document"

void directoryHandler(dir, request) {
  var indexUri = new Uri.file(dir.path).resolve('index.html');
  virDir.serveFile(new File(indexUri.toFilePath()), request);
}

void main() {
  virDir = new VirtualDirectory(r"E:\DartProject\WebClient\web")
    ..allowDirectoryListing = true
    ..directoryHandler = directoryHandler;

  HttpServer.bind(InternetAddress.LOOPBACK_IP_V4, 8080).then((server) {
    print("Serving at ${server.address}:${server.port}");
    server.listen((request) {
      virDir.serveRequest(request);
    });
  });
}