如何将多个path
添加到Mojo::URL
对象?请考虑以下示例:
perl -Mojo -E 'say new Mojo::URL("https://httpbin.org/")->path("bytes")->path($_)->to_abs for (1..3)'
所需输出:
https://httpbin.org/bytes/1
https://httpbin.org/bytes/2
https://httpbin.org/bytes/3
实际产量:
https://httpbin.org/1
https://httpbin.org/2
https://httpbin.org/3
做->path("bytes/$_")
似乎是错误的。
2条答案
按热度按时间lbsnaicq1#
你的例子 * 几乎 * 工作,但问题是,
构造URL
https://httpbin.org/bytes
,它的“基”为https://httpbin.org/
。当您在其上执行->path("1")
时,将相对于基进行解析,这意味着1
* 替换 *bytes
。相反,如果你这样做,
通过添加
/
,您可以获得您想要的结果。这是因为构造HTTP URL的东西不知道什么是“目录”,什么不是,除非URL用斜杠明确表示。这就是为什么传统上,如果您访问的目录路径没有尾随斜杠,Web服务器会将您重定向到以斜杠结尾的URL。
fgw7neuy2#
使用Mojo::URL和Path::Tiny的组合