Envoyer du JSON
Leçon 35 sur 47 du cours Réseautage avec le terminal de Coddy.
La plupart des API aujourd’hui veulent du JSON, et non un encodage de formulaire. Deux choses doivent changer, et oublier la seconde est l’erreur la plus courante dans tout ce domaine.
curl -s -H 'Content-Type: application/json' \
-d '{"name":"ada"}' http://127.0.0.1:9125/usersPremièrement, le corps devient du JSON. Deuxièmement, vous devez le déclarer avec un en-tête Content-Type, car sinon curl continue à identifier le corps comme des données de formulaire. Le serveur essaie alors d’analyser le JSON comme des paires key=value et le rejette, généralement avec une erreur 400.
Donc, lorsqu’une API indique que votre JSON est invalide alors qu’il vous semble parfaitement valide, vérifiez l’en-tête avant de vérifier le JSON.
Faites également attention aux guillemets. Le JSON contient beaucoup de guillemets doubles ; entourez donc l’ensemble du corps de guillemets simples et le shell le laissera tel quel.
Défi
ExpertEnvoyez un véritable JSON et prouvez qu’il a été correctement étiqueté.
- Démarrez l’écouteur de capture sur le port 9125
- POSTez le corps
{"name":"ada"}vers/users, en le déclarant comme JSON - Affichez la ligne Content-Type de
req.txt
Sortie attendue :
Content-Type: application/jsonEssayez vous-même
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Réseautage avec le terminal
1Comment les réseaux communiquent
Qu’est-ce qu’un réseauClients et serveursAdresses IPVotre première requête4Est-il joignable ?
ICMP et pingLire la sortie de pingQuand ping mentRefusé ou délai d’attente dépasséRécapitulatif : joignabilité7Envoyer des données
POST avec -dCe que -d envoie réellementEncodage de formulaireEnvoyer du JSONPUT et DELETERécapitulatif : écrire des données2Noms et DNS
Pourquoi les noms existentLe fichier hostsRechercher un nomTypes d’enregistrementsRécapitulatif : les noms3Ports et sockets
Qu’est-ce qu’un portPorts bien connusLocalhostÉcoute ou connexionRécapitulatif : les ports6curl en profondeur
Afficher les en-têtesEnregistrer les réponsesEn-têtes personnalisésStatut et duréeCodes de sortie de curlRécapitulatif : options de curl9Authentification et débogage
Clés API et BearerL’agent utilisateurDélais d’attente et nouvelles tentativesLire un échecRécapitulatif : débogageEntraînez-vous par vous-même : Playground Terminal