飞镖架如何在不读取中间件的情况下检查中间件中的请求

时间:2015-04-20 22:04:11

标签: dart

我正在尝试在Shelf中创建一个检查请求的中间件,如果找到某些值,则会处理请求,否则应将其发送到内部处理程序。例如。我想检查一下Request.method。

Handler middleware(Handler innerHandler) {

    return (Request req) async {
        if(req.method == "GET" && req.headers["xxx"] == yyy) {
            // Handle the request
            ...
        }
        else {
            // This gives exception:
            // Bad state: The 'read' method can only be called once on a shelf.Request/shelf.Response object.
            return innerHandler(req);
        }
    }

问题是在检查Request之后无法调用内部处理程序。我如何检查它,但仍能将其发送到内部处理程序?

1 个答案:

答案 0 :(得分:0)

我还没有以这种方式使用它,但我认为你需要在请求上调用change,然后你应该能够读取和转发它。另请参阅How to create/add middleware that adds default headers to each request