如何使用Dart http_服务器:VirtualDirectory
我一直在使用如何使用Dart http_服务器:VirtualDirectory,dart,dart-io,Dart,Dart Io,我一直在使用dart:routeapi为静态文件提供服务,但我注意到有一个名为http\u-server的核心库,其中包含dart:ioHttpServer的助手类和函数 我特别感兴趣的是类VirtualDirectory,根据文档,它将一个字符串对象作为目录的静态内容,然后调用方法service() var-virtualDirectory=new-virtualDirectory('/var/www/'); serve(新的HttpServer('0.0.0.0',8080)); 这不起
dart:route
api为静态文件提供服务,但我注意到有一个名为http\u-server
的核心库,其中包含dart:io
HttpServer
的助手类和函数
我特别感兴趣的是类VirtualDirectory
,根据文档,它将一个字符串对象作为目录的静态内容,然后调用方法service()
var-virtualDirectory=new-virtualDirectory('/var/www/');
serve(新的HttpServer('0.0.0.0',8080));
这不起作用,因为HttpServer没有构造函数——至少在当前版本中没有
virtualDirectory.service(HttpServer.bind('0.0.0.0',8080));
这就是我如何实例化服务器的原因,因为virtualDirectory.service()
不需要Future
,最后:
virtualDirectory.service(HttpServer.bind('0.0.0.0',8080).asStream());
也不符合
无法将参数类型“Stream”分配给参数类型
“溪流”
那么,如何将VirtualDirectory连接到服务器?我在网上找不到任何示例,VirtualDirectory源代码也没有明确说明这一点。如果可以的话,我会选择RTFM。链接可以作为答案。虚拟目录可以在将来由
HttpServer.bind返回的内部工作。您可以使用以下五行代码创建静态文件web服务器:
HttpServer.bind('127.0.0.1',8888)。然后((HttpServer){
VirtualDirectory vd=新的VirtualDirectory('../web/');
vd.jailRoot=false;
虚拟服务(服务器);
});
通过解析URI并在提供文件之前提取服务请求,可以使其更加复杂
导入'dart:io';
导入“包:http_server/http_server.dart”;
main(){
handleService(HttpRequest请求){
打印(“新服务请求”);
write('[{“field”:“value”}]');
request.response.close();
};
绑定('127.0.0.1',8888)。然后((HttpServer服务器){
VirtualDirectory vd=新的VirtualDirectory('../web/');
vd.jailRoot=false;
server.listen((请求){
打印(“request.uri.path:+request.uri.path”);
if(request.uri.path='/services'){
手持服务(请求);
}否则{
打印(“文件请求”);
虚拟服务器请求(请求);
}
});
});
}