R891
R891

Reputation: 2719

How do you make HTTP requests with Raku?

How do you make HTTP requests with Raku? I'm looking for the equivalent of this Python code:

import requests

headers = {"User-Agent": "python"}
url = "http://example.com/"
payload = {"hello": "world"}

res = requests.get(url, headers=headers)
res = requests.post(url, headers=headers, json=payload)

Upvotes: 13

Views: 932

Answers (3)

metagib
metagib

Reputation: 223

I want to contribute a little more. There is a fantastic module named WWW. It's very convenient to make 'gets' that receive json because it can be parsed automagically.

In their example:

use WWW;
my $response = jget('https://httpbin.org/get?foo=42&bar=x');

You can examine the objects using the basic functionalities of arrays and hashes, for example to extract the values of my response you can use:

$response<object_you_want_of_json><other_nested_object>[1]<the_last_level>

Here the number [1] are a nested list inside a hash, and the properties are the same. Welcome to the raku community !!!

Upvotes: 5

Scimon Proctor
Scimon Proctor

Reputation: 4558

You may want to try out the recent HTTP::Tiny module.

use HTTP::Tiny;
my $response = HTTP::Tiny.new.get( 'https://example.com/' );
say $response<content>.decode

Upvotes: 16

R891
R891

Reputation: 2719

After searching around a bit, I found an answer in the Cro docs.

use Cro::HTTP::Client;

my $resp = await Cro::HTTP::Client.get('https://api.github.com/');
my $body = await $resp.body;

# `$body` is a hash
say $body;

There's more information on headers and POST requests in the link.

Upvotes: 11

Related Questions