Как сделать HTTP-запрос в Nim

Как сделать HTTP-запрос в Nim?

Руководство для начинающих по веб-разработке на React.js
Руководство для начинающих по веб-разработке на React.js
Веб-разработка - это захватывающая и постоянно меняющаяся область, которая постоянно развивается благодаря новым технологиям и тенденциям. Одним из...
Разница между Angular и React
Разница между Angular и React
React и AngularJS - это два самых популярных фреймворка для веб-разработки. Оба фреймворка имеют свои уникальные особенности и преимущества, которые...
Инструменты для веб-скрапинга с открытым исходным кодом: Python Developer Toolkit
Инструменты для веб-скрапинга с открытым исходным кодом: Python Developer Toolkit
Веб-скрейпинг, как мы все знаем, это дисциплина, которая развивается с течением времени. Появляются все более сложные средства борьбы с ботами, а...
Калькулятор CGPA 12 для семестра
Калькулятор CGPA 12 для семестра
Чтобы запустить этот код и рассчитать CGPA, необходимо сохранить код как HTML-файл, а затем открыть его в веб-браузере. Для этого выполните следующие...
ONLBest Online HTML CSS JAVASCRIPT Training In INDIA 2023
ONLBest Online HTML CSS JAVASCRIPT Training In INDIA 2023
О тренинге HTML JavaScript :HTML (язык гипертекстовой разметки) и CSS (каскадные таблицы стилей) - две основные технологии для создания веб-страниц....
Как собрать/развернуть часть вашего приложения Angular
Как собрать/развернуть часть вашего приложения Angular
Вам когда-нибудь требовалось собрать/развернуть только часть вашего приложения Angular или, возможно, скрыть некоторые маршруты в определенных средах?
2
0
104
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Пример запроса 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

Это не так. Этот код не компилируется, так как await ДОЛЖЕН быть в асинхронном процессе.

xbello 12.01.2023 17:18

Верно! Я не собирался давать компилируемую программу, а скорее пример правильных модулей и их использования. Я вижу, что это может ввести в заблуждение, только что исправил.

Alexandre Daubricourt 12.01.2023 20:52
Ответ принят как подходящий

Ответ на этот вопрос содержится в первых нескольких строках документации 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()

Другие вопросы по теме