Perl: LWP :: UserAgent Относительно правил передачи параметров - PullRequest
0 голосов
/ 17 марта 2020

например, у меня есть команда

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,

Большое спасибо!

1 Ответ

3 голосов
/ 17 марта 2020

Документация для get() гласит:

get

my $res = $ua->get( $url );
my $res = $ua->get( $url , $field_name => $value, ... );

Этот метод отправит запрос GET по указанному URL. Дальнейшие аргументы могут быть приведены для инициализации заголовков запроса. Они даны как отдельные пары имя / значение. Возвращаемое значение является объектом ответа. См. HTTP :: Response для описания интерфейса, который он предоставляет.

Итак, это просто говорит о передаче аргументов в виде пар ключ / значение. Это ничего не говорит об использовании ссылки на массив. Итак, на вашем месте я бы придерживался первого подхода.

«Толстая запятая» (=>) описана в perldo c perlop (потому что это оператор), который говорит:

Оператор => (иногда произносится как «толстая запятая») является синонимом запятой, за исключением того, что он вызывает слово слева от него, если оно интерпретируется как строка начинается с буквы или подчеркивания и состоит только из букв, цифр и подчеркивания. Это включает в себя операнды, которые в противном случае могли бы интерпретироваться как операторы, константы, v-строки с одним числом или вызовы функций. Если вы сомневаетесь в этом поведении, левый операнд может быть заключен в кавычки явно.

В противном случае оператор => ведет себя точно как оператор запятой или разделитель аргументов списка, в зависимости от контекста.

По сути, если вещь слева - это одно слово (под которым я подразумеваю последовательность букв c и букв подчеркивания), то вы можете опустить кавычки вокруг нее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...