【问题标题】:How do you make HTTP requests with Raku?您如何使用 Raku 发出 HTTP 请求?
【发布时间】:2021-03-08 01:23:26
【问题描述】:

如何使用 Raku 发出 HTTP 请求?我正在寻找与此 Python 代码等效的代码:

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)

【问题讨论】:

    标签: raku


    【解决方案1】:

    您可能想试试最近的HTTP::Tiny 模块。

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

    【讨论】:

    • 谢谢,这似乎比我做的要好。该页面还引导我访问HTTP::UserAgent。我在这里添加了另一个相关问题,因为当我转换来自 JSON 的响应时,它们的响应会产生意想不到的结果。 stackoverflow.com/questions/65014105/…
    【解决方案2】:

    经过一番搜索,我在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;
    

    链接中有更多关于标头和POST 请求的信息。

    【讨论】:

      【解决方案3】:

      我想贡献更多。有一个很棒的模块名为WWW。 接收 json 的 'gets' 非常方便,因为它可以自动解析。

      在他们的例子中:

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

      您可以使用数组和哈希的基本功能检查对象,例如提取我的响应值,您可以使用:

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

      这里的数字 [1] 是哈希内的嵌套列表,属性相同。欢迎来到乐社区!!!

      【讨论】:

      • 谢谢,看起来不错,但是当我使用zef install WWW 时,它会在终端中询问我的 Github 用户名和密码,这让我有点紧张。当我用 zef 安装软件包时应该这样做吗?
      • 我也遇到了zef install WWW 的问题并提出了一个[问题][1] [1]:github.com/raku-community-modules/WWW/issues/19
      猜你喜欢
      • 2019-10-20
      • 1970-01-01
      • 1970-01-01
      • 2022-07-02
      • 1970-01-01
      • 2013-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多