Convertisseur curl vers Rust

Convertissez une commande curl en code Rust avec reqwest instantanément dans votre navigateur. La commande reste sur votre appareil.

Votre commande curl est convertie en Rust localement dans votre navigateur et n'est jamais envoyée, mais évitez de coller de vrais jetons ou identifiants de production dans un quelconque outil.

Convertissez aussi curl en JavaScript fetch

À propos de cURL vers Rust

cURL to Rust prend une commande curl copiée depuis un terminal, les DevTools du navigateur ou une documentation d'API, et la réécrit sous forme de programme Rust asynchrone basé sur le crate reqwest. L'outil lit des options comme -X, -H, -d, --data-raw, --json, -u et -G, choisit le bon reqwest::Method, puis opte pour .json(...) pour les corps JSON valides ou .body(...) pour les charges formulaire ou brutes, afin que la requête corresponde à ce que curl enverrait réellement. Une option -u/--user devient un appel idiomatique .basic_auth(...) plutôt qu'un en-tête écrit à la main. C'est pratique lorsque vous portez un test d'API rapide vers un service Rust, un outil en ligne de commande ou un test d'intégration sans réécrire à la main le code répétitif de reqwest. Toute la conversion s'exécute dans votre navigateur : la commande curl et les jetons qu'elle contient sont traités localement sur votre appareil et ne sont jamais envoyés.

Fonctionnalités

Comment utiliser cURL vers Rust

  1. Collez votre commande curl dans le champ de commande cURL.
  2. Lisez le programme Rust reqwest généré dans le panneau de sortie.
  3. Vérifiez la bannière d'avertissement pour les options ajustées ou ignorées.
  4. Cliquez sur Copier, ou téléchargez le code en tant que request.rs.

Exemple

Entrée

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

Sortie

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(())
}

Un corps JSON est transmis avec .json(...) afin que reqwest le sérialise pour vous.

Erreurs courantes et dépannage

Foire aux questions

Comment convertir une commande curl en Rust ?
Collez la commande curl dans le champ de saisie et cURL to Rust affiche à droite un programme reqwest asynchrone que vous pouvez copier ou télécharger en tant que request.rs.
cURL to Rust génère-t-il du code pour reqwest ou un autre client HTTP ?
Il cible le crate reqwest, très utilisé, avec tokio comme runtime asynchrone, et produit une async fn main() avec #[tokio::main]. Ajoutez les deux crates à votre Cargo.toml avant d'exécuter le code.
Quand le convertisseur utilise-t-il .json(...) plutôt que .body(...) ?
Il utilise .json(&serde_json::json!(...)) quand le corps est du JSON valide (envoyé avec --json ou un Content-Type JSON), et .body(...) pour les corps encodés en formulaire ou en chaîne brute.
Comment une valeur d'authentification basique curl -u est-elle traitée dans la sortie Rust ?
Une valeur -u ou --user est représentée par .basic_auth(utilisateur, Some(mot_de_passe)) sur le constructeur de requête, plutôt que par un en-tête Authorization construit à la main.
Ma commande curl est-elle envoyée quelque part quand je la convertis en Rust ?
Non. La conversion de curl en Rust s'exécute entièrement dans votre navigateur, donc la commande et les identifiants qu'elle contient restent sur votre appareil.
De quels crates dépend le code reqwest généré ?
La sortie nécessite reqwest (avec la fonctionnalité json), serde_json et tokio (avec la fonctionnalité full) comme dépendances ; ajoutez-les avec cargo add avant de compiler.

Outils associés

Tous les outils ArrayKit