我正在编写一个使用 request.body 并进行一些验证的中间件,如下所示:
before-matched {
request-body -> (:$email, :$captcha-token, :$captcha-solution, *%_) {
# Validate the email.
unless Email::Valid.mx($email).so {
response.status = 400;
content 'application/json', %(message => 'Invalid Email');
}
# Validate captcha.
unless $captcha.validate($captcha-token, $captcha-solution) {
response.status = 401;
content 'application/json', %(message => 'Invalid Captcha');
}
}
}
post -> 'api', 'subscribe' {
put "outside";
request-body -> (:$name, :$email, *%_) {
put "inside";
dd $name, $email;
content 'application/json', %(message => $name);
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试多次使用 request.body 并且连接挂起。“inside”永远不会被打印(来自上面的示例)。
这是一个可重现的示例:
use Cro::HTTP::Server;
use …Run Code Online (Sandbox Code Playgroud)