Конвертер curl в Rust

Мгновенно преобразуйте команду curl в код Rust с reqwest прямо в браузере. Команда остаётся на вашем устройстве.

Ваша команда curl преобразуется в Rust локально в браузере и никогда не отправляется на сервер, но не вставляйте реальные production-токены или учётные данные в какие-либо инструменты.

Также конвертируйте curl в JavaScript fetch

Об инструменте cURL в Rust

cURL to Rust берёт команду curl, скопированную из терминала, DevTools браузера или документации API, и переписывает её в виде асинхронной программы на Rust на основе крейта reqwest. Инструмент читает такие флаги, как -X, -H, -d, --data-raw, --json, -u и -G, выбирает правильный reqwest::Method и использует .json(...) для валидного JSON-тела или .body(...) для формы либо необработанной полезной нагрузки, чтобы запрос точно соответствовал тому, что реально отправил бы curl. Флаг -u/--user преобразуется в идиоматичный вызов .basic_auth(...) вместо ручного заголовка. Это удобно, когда вы переносите быстрый тест API в сервис на Rust, консольную утилиту или интеграционный тест, не переписывая вручную шаблонный код reqwest. Всё преобразование выполняется в браузере, поэтому команда curl и любые токены в ней обрабатываются локально на вашем устройстве и никогда не отправляются на сервер.

Возможности

Как использовать cURL в Rust

  1. Вставьте свою команду curl в поле команды cURL.
  2. Изучите сгенерированную программу на Rust с reqwest в панели вывода.
  3. Проверьте баннер предупреждений — какие флаги были скорректированы или пропущены.
  4. Нажмите «Копировать» или скачайте код как request.rs.

Пример

Ввод

curl -X POST https://api.example.com/users \
  -H "Content-Type: application/json" \
  -d '{"name":"Ada"}'

Результат

use reqwest::header::{HeaderMap, HeaderName, HeaderValue};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = reqwest::Client::new();

    let mut headers = HeaderMap::new();
    headers.insert(HeaderName::from_bytes(b"Content-Type")?, HeaderValue::from_str("application/json")?);

    let response = client
        .request(reqwest::Method::POST, "https://api.example.com/users")
        .headers(headers)
        .json(&serde_json::json!({
            "name": "Ada"
        }))
        .send()
        .await?;

    println!("{}", response.status());
    let body = response.text().await?;
    println!("{}", body);

    Ok(())
}

Тело JSON передаётся через .json(...), поэтому reqwest сериализует его за вас.

Частые ошибки и устранение неполадок

Часто задаваемые вопросы

Как преобразовать команду curl в Rust?
Вставьте команду curl в поле ввода, и cURL to Rust отобразит справа асинхронную программу на reqwest, которую можно скопировать или скачать как request.rs.
cURL to Rust генерирует код для reqwest или другого HTTP-клиента?
Инструмент ориентирован на популярный крейт reqwest с tokio в качестве асинхронной среды выполнения и создаёт async fn main() с #[tokio::main]. Добавьте оба крейта в Cargo.toml перед запуском кода.
Когда конвертер использует .json(...), а когда .body(...)?
Он использует .json(&serde_json::json!(...)), когда тело является валидным JSON (отправлено с --json или JSON-типом Content-Type), и .body(...) для тела в формате формы или необработанной строки.
Как значение базовой авторизации curl -u обрабатывается в выводе на Rust?
Значение -u или --user представляется как .basic_auth(логин, Some(пароль)) в построителе запроса, а не как заголовок Authorization, собранный вручную.
Отправляется ли моя команда curl куда-либо при конвертации в Rust?
Нет. Конвертация curl в Rust полностью выполняется в вашем браузере, поэтому команда и любые учётные данные в ней остаются на вашем устройстве.
От каких крейтов зависит сгенерированный код reqwest?
Для вывода требуются reqwest (с фичей json), serde_json и tokio (с фичей full) в качестве зависимостей — добавьте их через cargo add перед компиляцией.

Связанные инструменты

Все инструменты ArrayKit