我如何在Cro中插入一些路由检查中间件?

问题描述 投票:4回答:1

说在提供某些结果之前,我需要检查一些URI。我可以做这样的事情:

sub type-routes {
    route {
        get -> Str $type where $type ∈ @food-types {
            my %ingredients-table = $rrr.calories-table;
            my @result =  %ingredients-table.keys.grep: {
                %ingredients-table{$_}{$type} };
            content 'application/json', @result;
        }
        get -> Str $type where $type ∉ @food-types {
            not-found;
        }
    }
}

在这种情况下,现有产品和不存在产品的签名基本上不同。但是,将在所有路由中使用相同的URI。能够在任何路由都被匹配之前检查它,这将很有趣,因此,当它到达路由块时,我们知道这是可以的。这样一来,它也可以在不同的路径之间重用。我已经检查了before and before-match,显然可以做到这一点,但是您需要分析请求对象才能做到这一点,没有简单的方法可以做到这一点。

或者,有什么方法可以定义“后备路由”,以便如果未找到URI,则返回未找到?

说在提供某些结果之前,我需要检查一些URI。我可以做这样的事情:sub type-routes {route {get-> Str $ type where $ type∈@ food-types {my%...

microservices raku cro
1个回答
5
投票
在给出中间件答案之前,在这种情况下,我的首选方法通常是before类型:
© www.soinside.com 2019 - 2024. All rights reserved.