cURL vers Swift
Collez une commande curl et obtenez du code Swift qui fait la même requête avec URLSession.
cURL vers Swift analyse votre commande dans le navigateur. Jetons et identifiants ne quittent pas votre appareil.
Essayer le client d’API
À propos de cURL vers Swift
La documentation d’API parle curl et les applications iOS parlent URLSession : traduire à la main est un travail répétitif qui invite aux petites erreurs — un en-tête oublié, un corps laissé en chaîne alors qu’il devrait être du JSON, une option d’authentification silencieusement ignorée. Ce convertisseur analyse la commande curl comme curl lui-même, y compris les options qui changent la méthode ou replient les identifiants dans un en-tête, et produit du Swift qui n’utilise que Foundation. Un corps JSON devient un dictionnaire Swift passé à JSONSerialization plutôt qu’une chaîne opaque.
Fonctionnalités
- Analyse -X, -H, -d, --data-raw, --json, -u, -b, -A, -e et -G comme curl
- Produit du code URLSession qui ne demande rien de plus que Foundation
- Corps JSON rendus en dictionnaire Swift et encodés avec JSONSerialization
- Authentification basique reconstruite depuis les identifiants, avec base64EncodedString
- Méthode déduite de la présence d’un corps, ou reprise de -X
- Signale les options curl sans équivalent Swift raisonnable
- Copiez le code ou téléchargez-le en fichier .swift
Comment utiliser cURL vers Swift
- Collez la commande curl, avec ses options et son corps
- Lisez le Swift généré à droite
- Vérifiez les avertissements sur les options non traduisibles
- Copiez le code ou téléchargez-le en .swift
Exemple
Entrée
curl https://api.example.com/users -H 'Content-Type: application/json' -d '{"name":"Ada"}'
Sortie
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
La méthode se déduit du corps, exactement comme curl la déduirait.
Erreurs courantes et dépannage
- La requête marche en curl mais échoue dans l’application. — Vérifiez App Transport Security. iOS bloque le HTTP en clair par défaut : un point de terminaison http:// nécessite une exception dans l’Info.plist ou une URL https.
- Le code compile mais n’affiche rien. — URLSession est asynchrone. Dans un outil en ligne de commande le processus se termine avant l’exécution du bloc de complétion : gardez la boucle d’exécution active ou passez à la forme async/await.
- Une option -k ou --insecure a été ignorée. — Volontairement. Contourner la validation du certificat exige un URLSessionDelegate et mérite d’être décidé explicitement.
- Des caractères spéciaux du corps sont mal rendus. — Vérifiez les guillemets de la commande d’origine. Un corps entre guillemets doubles est déjà passé par votre shell.
Foire aux questions
- Le Swift produit fonctionne-t-il sur iOS, macOS et Linux ?
- Oui. Il emploie URLSession de Foundation, disponible sur les plateformes Apple et dans swift-corelibs-foundation sous Linux, le même fichier compile donc côté serveur.
- Puis-je obtenir du code async/await plutôt qu’un bloc de complétion ?
- La forme produite utilise une data task avec bloc, qui fonctionne partout. La remplacer par `let (data, response) = try await URLSession.shared.data(for: request)` tient en une ligne.
- Comment un corps JSON est-il traité ?
- Il est analysé puis rendu en dictionnaire [String: Any], avant d’être encodé par JSONSerialization. La charge utile reste lisible et modifiable sans toucher à une chaîne échappée.
- Qu’advient-il des cookies d’une option -b ?
- Ils deviennent un en-tête Cookie. Notez qu’URLSession possède son propre stockage de cookies, susceptible d’ajouter ou de remplacer sans configuration contraire.
- Ma commande curl est-elle téléversée lors de la conversion vers Swift ?
- Non. La commande est analysée et le code produit dans votre navigateur, ce qui compte car les commandes curl de documentation contiennent souvent de vraies clés d’API.
Outils associés
- cURL vers Fetch — Convertit une commande curl en un appel fetch() JavaScript.
- curl vers Python — Convertissez une commande curl en script Python requests.
- curl vers Node.js — Convertissez une commande curl en script Node.js basé sur axios.
- cURL vers Java — Convertit une commande curl en code Java avec HttpClient.
- cURL vers Dart — Convertit une commande curl en code Dart avec package:http.
- Client API — Envoyez des requêtes HTTP, créez en-têtes et paramètres et inspectez les réponses ; conserve vos 25 dernières.
Tous les outils ArrayKit