Конвертер 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 и любые токены в ней обрабатываются локально на вашем устройстве и никогда не отправляются на сервер.
Возможности
- Генерирует async fn main(), связанную с #[tokio::main] и reqwest::Client
- Сопоставляет метод curl с соответствующим reqwest::Method, включая произвольные глаголы
- Собирает HeaderMap из каждого флага -H/--header
- Использует .json(&serde_json::json!(...)) для валидного JSON-тела и .body(...) для формы или необработанных данных
- Преобразует -u/--user в идиоматичный вызов .basic_auth(логин, Some(пароль))
- Форматирует тело JSON, чтобы литерал было легко читать и редактировать
- Предупреждает о флагах без аналога в reqwest, например -k и опциях вывода в файл
- Копирование результата или скачивание в один клик как request.rs
Как использовать cURL в Rust
- Вставьте свою команду curl в поле команды cURL.
- Изучите сгенерированную программу на Rust с reqwest в панели вывода.
- Проверьте баннер предупреждений — какие флаги были скорректированы или пропущены.
- Нажмите «Копировать» или скачайте код как 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 сериализует его за вас.
Частые ошибки и устранение неполадок
- В выводе используется .body(...), хотя ожидался .json(...). — Отправьте тело с флагом --json или добавьте -H "Content-Type: application/json", чтобы конвертер распознал его как JSON и переключился на .json(...).
- Компиляция завершается ошибкой из-за отсутствующего крейта serde_json или tokio. — Добавьте reqwest (с фичей json), serde_json и tokio (с фичей full) в зависимости в Cargo.toml — сгенерированный код рассчитан на эти крейты.
- Тело JSON выводится как строка в кавычках, а не как литерал объекта. — Это происходит, если тело не является валидным JSON. Исправьте JSON или оставьте его строкой и отправьте через .body(...).
- Вызов .basic_auth(...) отсутствует, хотя в команде curl использовался -u. — Убедитесь, что значение -u имеет вид логин:пароль. Конвертер декодирует внутренне сгенерированный заголовок Basic auth, чтобы восстановить логин и пароль.
Часто задаваемые вопросы
- Как преобразовать команду 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 перед компиляцией.
Связанные инструменты
- cURL в Fetch — Преобразуйте команду curl в вызов fetch() на JavaScript.
- curl в Python — Преобразование команды curl в скрипт Python requests.
- curl в Go — Преобразование команды curl в код Go net/http.
- curl в Node.js — Преобразование команды curl в код Node.js axios.
- curl в PHP — Преобразование команды curl в скрипт PHP cURL.
- API-клиент — Отправляйте HTTP-запросы, задавайте заголовки и параметры и изучайте ответы; сохраняет последние 25.
Все инструменты ArrayKit