如何使用 Gleam 发出 HTTP 请求?

How do you make an HTTP request with Gleam?

我正在尝试 gleam 编程语言,我希望做一些简单的事情来感受这种语言。我想尝试的一件事是发出 HTTP 请求,我已经做到了:

import gleam/io
import gleam/http/request
import gleam/uri.{parse}

pub fn main() {
  try uri = parse("https://lichess.org/api/puzzle/daily")
  let req = request.from_uri(uri)

  io.debug(req)
}

如果我 运行 输出

{ok,{request,get,[],<<>>,https,<<"lichess.org">>,none,<<"/api/puzzle/daily">>,
             none}}

这让我认为 Request 对象正在正确构建,但我没有看到任何请求。如何触发此请求?

我在写出这个问题的过程中发现 gleam/http 库实际上并没有提供 HTTP 客户端,而这正是我一直在寻找的。同样,它不提供 HTTP 服务器,但是,gleam/http 文档中的所有示例都展示了如何使用 gleam/cowboy or gleam/elli 设置服务器,这使得它们与核心 gleam/http 图书馆对我来说很清楚。

正确的方法是使用 HTTP 客户端库,例如 gleam/hackney

我得到了以下代码:

import gleam/io
import gleam/hackney
import gleam/http/request
import gleam/uri.{parse}

pub fn main() {
  try uri = parse("https://lichess.org/api/puzzle/daily")
  try req = request.from_uri(uri)
  let resp = hackney.send(req)
  case resp {
    Ok(r) -> io.println(r.body)
    Error(_e) -> io.println("Failed")
  }
  Ok(Nil)
}

正确执行请求并打印正文