如何使用Dart http_server:VirtualDirectory

 pengminglin1968 发布于 2023-02-13 18:09

我一直在使用dart:routeapi来提供静态文件,但我注意到有一个核心库http_server,它包含了帮助程序类和函数dart:io HttpServer.

我特别感兴趣的是这个类VirtualDirectory,根据文档,它为目录的静态内容获取一个String对象,然后调用该方法serve()

var virtualDirectory = new VirtualDirectory('/var/www/');
virtualDirectory.serve(new HttpServer('0.0.0.0', 8080));

这不起作用,因为没有HttpServer的构造函数 - 至少在当前版本中没有.

virtualDirectory.serve(HttpServer.bind('0.0.0.0', 8080));

这是我实例化服务器的方式也失败了,因为virtualDirectory.serve()没有采取Future最后:

virtualDirectory.serve(HttpServer.bind('0.0.0.0', 8080).asStream());

也失败了 参数类型'Stream'无法分配给参数类型'Stream'

那么如何将VirtualDirectory连接到服务器?我没有在线可以找到的示例,VirtualDirectory源代码也没有说清楚.如果我能用FTFM,我会RTFM.链接很好,作为答案.

1 个回答
  • VirtualDirectory可以从内部未来返回的工作HttpServer.bind.您可以使用以下五行代码创建静态文件Web服务器:

    HttpServer.bind('127.0.0.1', 8888).then((HttpServer server) {
        VirtualDirectory vd = new VirtualDirectory('../web/');
        vd.jailRoot = false;
        vd.serve(server);
    });
    

    您可以通过解析URI并在提供文件之前提取服务请求来使其更加复杂.

    import 'dart:io';
    import 'package:http_server/http_server.dart';
    
    main() {
    
      handleService(HttpRequest request) {
        print('New service request');
        request.response.write('[{"field":"value"}]');
        request.response.close();
      };
    
      HttpServer.bind('127.0.0.1', 8888).then((HttpServer server) {
        VirtualDirectory vd = new VirtualDirectory('../web/');
        vd.jailRoot = false;
        server.listen((request) { 
          print("request.uri.path: " + request.uri.path);
          if (request.uri.path == '/services') {
            handleService(request);
          } else {
            print('File request');
            vd.serveRequest(request);
          } 
        });
      });
    }
    

    2023-02-13 18:10 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有