Kaynağa Gözat

Explications sur req. POST

Benoît Hubert 7 yıl önce
ebeveyn
işleme
e4b1f461f1

+ 14 - 4
react-tuto/src/markdown/5. Mini-serveur web/04. Telnet comme client HTTP.md

@@ -82,16 +82,26 @@ Note qu'on a un nouvel en-tête, `Content-Length`, qui indique le nombre d'octet
 
 Utilisons maintenant une méthode standard : `POST`.
 
-Relance `telnet 127.0.0.1 8081` puis saisis :
+Relance `telnet 127.0.0.1 8081` puis saisis ceci, et **attends un peu avant de valider** :
 ```text
 POST /login HTTP/1.1
 Content-Type: application/x-www-form-urlencoded
-Content-Length: 39
+Content-Length: 45
 
-username=jonsnow&pw=123456&action=login
+username=jonsnow&password=123456&action=login
 ```
 
-À nouveau, valide deux fois. La réponse est presque la même qu'avant :
+Note la différence avec la requête GET envoyée avant :
+
+- On a toujours la première ligne avec méthode, URL, HTTP suivi de sa version
+- On a ensuite deux lignes d'en-têtes. Le serveur envoie des en-têtes de réponse pour nous indiquer comment prendre en charge celle-ci, mais le client peut lui aussi communiquer au serveur des informations utiles... voire indispensables ! Comme on *envoie* des données, on doit dire au serveur deux choses :
+    - Comment celles-ci sont encodées, grâce à `Content-Type`. La valeur de ce header est `application/x-www-form-urlencoded` : on envoie les données avec un formatage proche de celui utilisé pour passer des paramètres à une requête GET.
+    - Quelle quantité de données on envoie, grâce à `Content-Length`. Sa valeur est le nombre d'octets envoyés.
+- Note également qu'après les en-têtes, on a... Une ligne vide ! N'ai-je pas dit avant que ça signifiait que notre requête était terminée ? C'était vrai pour une requête GET car après la ligne contenant la méthode et les éventuelles en-têtes, elle n'est pas censée *envoyer* des données. Mais une requête POST doit envoyer un *corps* (*body*). Pour marquer la fin des headers, et le début du body, on laisse une ligne vide entre les deux.
+
+Ensuite, cette fois, si on laisse à nouveau une ligne vide, la requête sera considérée comme achevée, et pourra être traitée par le serveur.
+
+Donc, à nouveau, valide deux fois. La réponse est presque la même qu'avant :
 
 ```text
 HTTP/1.0 501 Unsupported method ('POST')

Dosya farkı çok büyük olduğundan ihmal edildi
+ 1 - 1
react-tuto/src/resources/markdown.json