Как сделать HTTP-запрос в Nim?
Пример запроса POST с использованием async.
import httpclient
import asyncdispatch
proc main(): Future[void] {.async.} =
let client = newAsyncHttpClient()
client.headers = newHttpHeaders({"Content-Type": "application/json"})
let res = await client.request("https://stackoverflow.com/",
httpMethod = HttpPost, body = "some data")
let resBody = await response.body
Верно! Я не собирался давать компилируемую программу, а скорее пример правильных модулей и их использования. Я вижу, что это может ввести в заблуждение, только что исправил.
Ответ на этот вопрос содержится в первых нескольких строках документации httpclient, наряду с POST, файловым POST, SSL, прокси-сервером, тайм-аутами и обработкой перенаправления...
Синхронизация:
import std/httpclient
var client = newHttpClient()
echo client.getContent("http://google.com")
Асинхронный:
import std/[asyncdispatch, httpclient]
proc asyncProc(): Future[string] {.async.} =
var client = newAsyncHttpClient()
return await client.getContent("http://example.com")
echo waitFor asyncProc()
Это не так. Этот код не компилируется, так как await ДОЛЖЕН быть в асинхронном процессе.