我正在尝试在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之后无法调用内部处理程序。我如何检查它,但仍能将其发送到内部处理程序?
答案 0 :(得分:0)
我还没有以这种方式使用它,但我认为你需要在请求上调用change
,然后你应该能够读取和转发它。另请参阅How to create/add middleware that adds default headers to each request