perl - Perl: LWP::UserAgent 关于传递参数的规则
问题描述
例如我有一个命令
curl -H "Content-Type: application/json" -H "Authorization: Bearer ACCESS_TOKEN" -X GET https://api.xxx/v1/datapackages/yyy
(1) 我很困惑何时在传递参数时使用 [ ]。下面哪一项是正确的,为什么?
没有 [ ]
my $r2 = $ua -> get("https://api.xxx/v1/datapackages/yyy",
'Content-Type' => 'application/json',
Authorization => 'Bearer '.$token,
);
或与 [ ]
my $r2 = $ua -> get("https://api.xxx/v1/datapackages/yyy",
[
'Content-Type' => 'application/json',
Authorization => 'Bearer '.$token,
]
);
(2) 我看到有时参数被引用,有时不被引用。是否应该引用“授权”并写为
和 ' '
'Authorization' => 'Bearer '.$token,
或没有''
Authorization => 'Bearer '.$token,
非常感谢!
解决方案
的文档是get()
这样说的:
得到
my $res = $ua->get( $url ); my $res = $ua->get( $url , $field_name => $value, ... );
此方法将在给定的 URL 上发送一个 GET 请求。可以提供更多参数来初始化请求的标头。这些以单独的名称/值对的形式给出。返回值是一个响应对象。有关它提供的接口的描述,请参阅HTTP::Response。
所以,这只是谈论将参数作为键/值对传递。它没有说明使用数组引用。所以,如果我是你,我会坚持第一种方法。
“胖逗号”(=>
)记录在perldoc perlop中(因为它是一个运算符),它说:
运算符(有时发音为“
=>
fat comma”)是逗号的同义词,但如果它以字母或下划线开头并且仅由字母、数字和下划线组成,它会使左侧的单词被解释为字符串。这包括可能被解释为运算符、常量、单个数字 v 字符串或函数调用的操作数。如果对此行为有疑问,可以明确引用左操作数。否则,
=>
根据上下文,运算符的行为与逗号运算符或列表参数分隔符完全相同。
基本上,如果它左边的东西是一个单词(我的意思是一系列字母数字字符和下划线),那么你可以省略它周围的引号。
推荐阅读
- c# - MongoDB C# 驱动程序在第一次连接初始化时很慢
- css - tailwindcss-forms 插件/使用 Tailwind CSS 样式化表单
- javascript - 从 Array.prototype.map() 返回不一致
- native-web-component - Web 组件是否设计为更容易作为单个文件工作?
- javascript - 输入失去对 setState React 的关注
- python-3.x - Sklearn 的 train_test_split 拆分为两个输入和一个输出
- .net - NSubstitute 没有实现 IMediator 的发布方法
- gitlab - GitLab Kubernetes 执行器:如何更改服务器外部 URI
- r - 我可以将 plot_ly 对象转换为 ggplot2 吗?
- corda - 向公证人请求 StateStatus