如何使用Dart和路由包对每个请求应用过滤器?

时间:2013-10-18 20:39:06

标签: dart dart-io

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

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

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

  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)

1 个答案:

答案 0 :(得分:2)

使用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);
}