Convertisseur de Curl vers JavaScript

Convertissez les commandes curl en code JavaScript - Générez du code JavaScript fetch/axios prêt à l'emploi pour les requêtes API

Avis de Confidentialité : Cet outil professionnel fournit une conversion sécurisée en code JavaScript avec une protection de la confidentialité de niveau entreprise. Nous ne stockons aucune donnée que vous soumettez, assurant une confidentialité complète pour votre travail de développement d'API.

Générateur de Code JavaScript

// JavaScript code will appear here
// Example:
// Using fetch API
fetch('https://api.example.com/data', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    name: 'test'
  })
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));

Commandes curl Courantes pour les Tests d'API JavaScript

Voici quelques commandes curl courantes que vous pouvez convertir en code JavaScript :

Exemples JavaScript Fetch et Axios

JavaScript offre plusieurs façons de faire des requêtes HTTP. Voici des modèles courants utilisant à la fois l'API Fetch et Axios :

Téléchargement de Fichier avec JavaScript Fetch

const formData = new FormData();
formData.append('file', document.querySelector('#fileInput').files[0]);

fetch('https://api.example.com/upload', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_TOKEN_HERE'
  },
  body: formData
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));

JavaScript Fetch avec Timeout et Gestion d'Erreurs

const controller = new AbortController();
const signal = controller.signal;

// Set timeout of 5 seconds
const timeoutId = setTimeout(() => controller.abort(), 5000);

fetch('https://api.example.com/data', {
  method: 'GET',
  signal: signal
})
.then(response => {
  if (!response.ok) {
    throw new Error(`HTTP error! Status: ${response.status}`);
  }
  clearTimeout(timeoutId);
  return response.json();
})
.then(data => console.log(data))
.catch(error => {
  if (error.name === 'AbortError') {
    console.error('Request timed out');
  } else {
    console.error('Error:', error);
  }
});

Comment Utiliser le Convertisseur de Code JavaScript

1. Utilisation de Base

Copiez votre commande curl → Collez-la dans la zone de saisie → Obtenez du code JavaScript instantanément

2. Implémentez une Gestion d'Erreurs Appropriée

axios.get('https://api.example.com/data')
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    if (error.response) {
      // Server returned an error status code
      console.error(`Server error: ${error.response.status}`);
      console.error(error.response.data);
    } else if (error.request) {
      // Request was made but no response received
      console.error('Network error - no response received');
    } else {
      // Error in request setup
      console.error('Request error:', error.message);
    }
  });

3. Utiliser l'Annulation de Requête pour une Meilleure Expérience Utilisateur

// Using fetch with AbortController
const controller = new AbortController();
const signal = controller.signal;

// Cancel request after 5 seconds
setTimeout(() => controller.abort(), 5000);

fetch('https://api.example.com/data', { signal })
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => {
    if (error.name === 'AbortError') {
      console.log('Request was cancelled');
    } else {
      console.error('Error:', error);
    }
  });

// Using axios with CancelToken
const source = axios.CancelToken.source();

// Cancel request after 5 seconds
setTimeout(() => {
  source.cancel('User cancelled the request');
}, 5000);

axios.get('https://api.example.com/data', {
  cancelToken: source.token
})
.then(response => console.log(response.data))
.catch(error => {
  if (axios.isCancel(error)) {
    console.log('Request cancelled:', error.message);
  } else {
    console.error('Error:', error);
  }
});

Questions Fréquemment Posées sur les Requêtes HTTP JavaScript

Q : En quoi l'API fetch de JavaScript diffère-t-elle de curl ?

R : Alors que curl est un outil en ligne de commande pour faire des requêtes HTTP, l'API fetch de JavaScript fournit une interface programmatique dans les navigateurs web et Node.js. Fetch utilise des Promesses pour gérer les opérations asynchrones, tandis que curl s'exécute de manière synchrone. De plus, fetch suit automatiquement les redirections et n'envoie pas de cookies par défaut, tandis que curl fait les deux sauf configuration contraire.

Q : Quelles sont les principales différences entre fetch et axios ?

R : Fetch est intégré aux navigateurs modernes mais nécessite plus de code standard pour la gestion des erreurs et n'analyse pas automatiquement les réponses JSON. Axios est une bibliothèque qui fournit une API plus riche en fonctionnalités avec analyse JSON automatique, meilleure gestion des erreurs, interception des requêtes/réponses et annulation de requête intégrée. Axios fonctionne également de manière cohérente dans les environnements navigateurs et Node.js.

Q : Comment gérer les problèmes CORS lors de la conversion de commandes curl en JavaScript ?

R : Les restrictions CORS (Cross-Origin Resource Sharing) s'appliquent au JavaScript basé sur le navigateur mais pas à curl. Lors de la conversion de commandes curl en JavaScript, vous pouvez rencontrer des erreurs CORS si le serveur n'inclut pas les en-têtes CORS appropriés. Les solutions incluent : utiliser un proxy CORS, demander au propriétaire de l'API d'activer les en-têtes CORS, implémenter un proxy côté serveur dans votre application, ou utiliser Node.js pour les requêtes qui ne s'exécutent pas dans le navigateur.

Q : Comment puis-je simuler le drapeau -k/--insecure de curl en JavaScript ?

R : Dans le JavaScript basé sur le navigateur, vous ne pouvez pas contourner la validation du certificat SSL car c'est une fonctionnalité de sécurité imposée par les navigateurs. Dans Node.js, vous pouvez définir l'option rejectUnauthorized: false dans la configuration de l'agent HTTPS. Cependant, cela est fortement déconseillé en production car cela compromet la sécurité. Exemple : const https = require('https'); const agent = new https.Agent({rejectUnauthorized: false});

Q : Comment gérer les téléchargements de fichiers similaires au drapeau -F de curl en JavaScript ?

R : Pour gérer les téléchargements de fichiers en JavaScript similaires au drapeau -F de curl, utilisez l'API FormData. Par exemple : const formData = new FormData(); formData.append('file', fileInput.files[0]); formData.append('field', 'value'); fetch('https://api.example.com/upload', { method: 'POST', body: formData }); Cette approche fonctionne avec fetch et axios.

Q : Comment définir des timeouts de requête comme le --connect-timeout de curl en JavaScript ?

R : Avec l'API fetch, utilisez AbortController avec setTimeout : const controller = new AbortController(); const timeoutId = setTimeout(() => controller.abort(), 5000); fetch(url, { signal: controller.signal }); Avec axios, utilisez l'option timeout : axios.get(url, { timeout: 5000 }); Les deux approches vous permettent de contrôler combien de temps attendre avant d'annuler une requête.

Q : Comment déboguer les requêtes réseau en JavaScript par rapport au mode verbose de curl ?

R : Alors que curl offre le drapeau -v/--verbose pour des informations détaillées sur les requêtes/réponses, JavaScript fournit différents outils de débogage. Dans les navigateurs, utilisez l'onglet Réseau dans les DevTools pour inspecter les requêtes, les en-têtes, les charges utiles et le timing. Pour le débogage programmatique, vous pouvez utiliser les intercepteurs axios pour enregistrer les détails des requêtes/réponses ou implémenter une journalisation personnalisée avec fetch. Dans Node.js, vous pouvez utiliser des bibliothèques comme 'http-debug' ou définir la variable d'environnement NODE_DEBUG=http.

Référence des Commandes Curl pour les Tests d'API JavaScript

Comprendre les commandes curl est essentiel pour des tests d'API efficaces avec JavaScript. Voici une référence rapide des options curl courantes que notre convertisseur prend en charge :

Syntaxe curl de Base

curl [options] [URL]

Options curl Courantes

Conversion de Commandes curl Complexes

Notre convertisseur JavaScript gère des commandes curl complexes, y compris plusieurs en-têtes, l'authentification, les charges utiles de données et diverses options. Il suffit de coller votre commande curl et d'obtenir un code JavaScript propre et moderne utilisant soit l'API Fetch, soit Axios.

Meilleures Pratiques HTTP JavaScript

Lorsque vous travaillez avec l'API Fetch de JavaScript ou Axios, suivez ces meilleures pratiques pour des interactions API efficaces et sécurisées :

1. Utiliser async/await pour une Meilleure Lisibilité

// Using async/await with fetch
async function fetchData() {
  try {
    const response = await fetch('https://api.example.com/data');
    
    if (!response.ok) {
      throw new Error(`HTTP error! Status: ${response.status}`);
    }
    
    const data = await response.json();
    console.log(data);
    return data;
  } catch (error) {
    console.error('Fetch error:', error);
  }
}

// Using async/await with axios
async function fetchDataWithAxios() {
  try {
    const response = await axios.get('https://api.example.com/data');
    console.log(response.data);
    return response.data;
  } catch (error) {
    console.error('Axios error:', error);
  }
}

2. Implémenter un Mécanisme de Nouvelle Tentative de Requête

async function fetchWithRetry(url, options = {}, retries = 3, backoff = 300) {
  try {
    const response = await fetch(url, options);
    return response;
  } catch (error) {
    if (retries <= 1) throw error;
    
    await new Promise(resolve => setTimeout(resolve, backoff));
    return fetchWithRetry(url, options, retries - 1, backoff * 2);
  }
}

3. Créer des Clients API Réutilisables

// Create configurable API client with axios
const apiClient = axios.create({
  baseURL: 'https://api.example.com',
  timeout: 10000,
  headers: {
    'Content-Type': 'application/json',
    'Accept': 'application/json'
  }
});

// Add request interceptors
apiClient.interceptors.request.use(config => {
  // Do something before request is sent
  const token = localStorage.getItem('token');
  if (token) {
    config.headers.Authorization = `Bearer ${token}`;
  }
  return config;
}, error => {
  return Promise.reject(error);
});

// Add response interceptors
apiClient.interceptors.response.use(response => {
  // Any status code within 2xx range
  return response;
}, error => {
  // Handle 401 Unauthorized errors
  if (error.response && error.response.status === 401) {
    console.log('Unauthorized, please login again');
  }
  return Promise.reject(error);
});

// Use the API client
apiClient.get('/users')
  .then(response => console.log(response.data))
  .catch(error => console.error(error));

4. Gérer les Requêtes Concurrentes

// Using Promise.all with fetch
async function fetchMultipleResources() {
  try {
    const [users, products, orders] = await Promise.all([
      fetch('https://api.example.com/users').then(res => res.json()),
      fetch('https://api.example.com/products').then(res => res.json()),
      fetch('https://api.example.com/orders').then(res => res.json())
    ]);
    
    console.log({ users, products, orders });
    return { users, products, orders };
  } catch (error) {
    console.error('Error fetching data:', error);
  }
}

// Using axios.all for concurrent requests
async function fetchMultipleResourcesWithAxios() {
  try {
    const [users, products, orders] = await axios.all([
      axios.get('https://api.example.com/users'),
      axios.get('https://api.example.com/products'),
      axios.get('https://api.example.com/orders')
    ]);
    
    console.log({
      users: users.data,
      products: products.data,
      orders: orders.data
    });
  } catch (error) {
    console.error('Error fetching data:', error);
  }
}

5. Implémenter la Mise en Cache des Requêtes

// Simple in-memory cache implementation
const cache = new Map();

async function fetchWithCache(url, options = {}, ttl = 60000) {
  const cacheKey = `${url}-${JSON.stringify(options)}`;
  
  // Check cache
  const cachedItem = cache.get(cacheKey);
  if (cachedItem && Date.now() < cachedItem.expiry) {
    console.log('Using cached data');
    return cachedItem.data;
  }
  
  // If no cache or expired, make the request
  const response = await fetch(url, options);
  const data = await response.json();
  
  // Update cache
  cache.set(cacheKey, {
    data,
    expiry: Date.now() + ttl
  });
  
  return data;
}
" } }, { "@type": "Question", "name": "Comment convertir une commande curl avec téléchargement de fichier en JavaScript ?", "acceptedAnswer": { "@type": "Answer", "text": "Pour les téléchargements de fichiers en JavaScript, vous devrez utiliser l'API FormData. Notre convertisseur gère les commandes curl avec les options -F ou --form et génère le code JavaScript approprié utilisant soit fetch, soit axios." } } ] }