dart - 如何使用 Dart 和路由包将过滤器应用于每个请求?

标签 dart dart-io

我正在编写服务器端 Dart,并且正在使用 http_server 和路由包。我想为每个请求运行一个过滤器。

在这种特殊情况下,我想添加 CORS header 。

这是我到目前为止的代码:

  new Router(server)
    ..serve('/register', method: 'POST')
      .transform(new HttpBodyHandler()).listen(registerPlayer)
    ..serve('/matches', method: 'GET')
      .transform(new HttpBodyHandler()).listen(listMatches)
    ..serve('/matches', method: 'POST')
      .transform(new HttpBodyHandler()).listen(createMatch)

最佳答案

使用 filterRegExp满足每个请求。

  new Router(server)
    ..filter(new RegExp(r'^.*$'), addCorsHeaders)
    ..serve('/register', method: 'POST')
      .transform(new HttpBodyHandler()).listen(registerPlayer)
    ..... more handlers

过滤器必须是 Future<bool> filter(HttpRequest req) :

Future<bool> addCorsHeaders(HttpRequest req) {
  log.fine('Adding CORS headers');
  req.response.headers.add('Access-Control-Allow-Origin', '*');
  return new Future.sync(() => true);
}

关于dart - 如何使用 Dart 和路由包将过滤器应用于每个请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19458671/

相关文章:

flutter - Sliverappbar与主体中的内容重叠( flutter )

android - Flutter-在子孙中调用setState后重建父对象

dart - 如何使用多个隔离来处理请求

dart - 如何使用 Dart 的 HttpClient 上传 PDF?

dart - 由于File.openRead和流处理而导致的内存泄漏?

flutter - 如何从Firestore文档的一个字段中获取数据?

flutter - 如何在 flutter 中创建带有透明孔的小部件

dom - Dart WebUI 自动生成代码的问题

dart - 高效地将图像文件流式传输到 HttpResponse

dart - 如何在 dart 控制台应用程序中禁用 stdin 回显以输入密码