我正在尝试使用frisby进行一些测试或自动化。
假设我有2个请求需要一个接一个地执行。但是,第一个请求会创建一个资源并在标头中返回它的URI:
use warnings;
use strict;
my ($lev, @el, @res, $rret);
while (my $str = <DATA>)
{
print "\nString: $str\n";
@res = ();
# Drop two layers to start: strip last two ), split by ( and drop 0,1
$str =~ s/ (.*) \) [^)]* \) [^)]* $/$1/x;
@el = split '\(', $str;
@el = @el[2..$#el];
# Edge case: may have one element and be done, but with extra )
if (@el > 1) { $lev = join '(', @el }
else { ($lev = $el[0]) =~ s|\)||g }
push @res, $lev;
# Get next level and join string back, recursively
while ( $rret = nest_one($lev) ) {
$lev = join '(', @$rret;
push @res, $lev;
last if @$rret == 1;
}
print "\t$_\n" for @res;
}
# Strip last ) and past it, split by ( and drop first element
sub nest_one {
(my $lev = $_[0]) =~ s/(.*) \) [^)]* $/$1/x;
my @el = split '\(', $lev;
shift @el;
return (@el) ? \@el : undef;
}
__DATA__
blabla(nothing(print me)) nanana (nanan)
blablabla(aaaaaaa(eeee(bbbb(cccc)bbb))aa)
blabla (blabla(hhhhh))
所以第二次调用的方式取决于第一次调用的响应头。 POST /resource
201
Location: /resource/123
看起来很有希望,但它似乎没有处理标题。文档似乎很短,并没有提到这一点。怎么办?
答案 0 :(得分:0)
您可以使用.after((res) -> ...
这将允许您检查响应,其中包含您要查找的标头。首先打印console.log(res)
响应以检查是否存在此类标题,然后您可以使用以下方法对其进行一些操作:res.headers.theOneThatYouWouldLikeToUse