Perl等效的JavaScript代码示例

Sop*_*hia 2 javascript perl http-request

我有这个代码:

  request({
    uri: 'https://graph.facebook.com/v2.6/me/messages',
    qs: { access_token: PAGE_ACCESS_TOKEN },
    method: 'POST',
    json: messageData
  })
Run Code Online (Sandbox Code Playgroud)

我想把它转换成Perl,到目前为止我是:

my $req = HTTP::Request->new( 'POST', 'https://graph.facebook.com/v2.6/me/messages');
$req->header( 'Content-Type' => 'application/json' );
$req->content( $messageData );
Run Code Online (Sandbox Code Playgroud)

我不知道如何将以下行合并到我的Perl代码中:

qs: { access_token: PAGE_ACCESS_TOKEN },
Run Code Online (Sandbox Code Playgroud)

它指定要添加到URL的查询参数.

我试图搜索网络,但大多数示例要么发送json内容或查询字符串,而不是两者.如果我对JavaScript代码的解释是正确的,我需要能够发送两者的东西.

提前感谢任何指导我的人.

ike*_*ami 5

您可以使用URI模块(可能由URI :: QueryParam模块补充)来构建(和操作)URL.

use HTTP::Request::Common qw( POST );
use JSON::XS              qw( encode_json );
use URI                   qw( );

my $message_data = encode_json(...);

my $url = URI->new('https://graph.facebook.com/v2.6/me/messages');
$url->query_form( access_token => PAGE_ACCESS_TOKEN );

my $req = POST($url,
   Content_Type => 'application/json',
   Content      => $message_data,
);
Run Code Online (Sandbox Code Playgroud)