Depuis très longtemps, la connectivité réseau est utilisé pour permettre à un programme d'exécuter une tâche sur une autre machine.
En exposant l'interface logicielle, API, via le protocole HTTP, toutes sortes de clients peuvent en bénéficier.
Au fil du temps, plusieurs mécanismes ont été développé pour rendre plus efficace l'utilisation de HTTP dans différents contexte
GET
/products?query=keyboard&sort=asc
POST
application/x-www-form-urlencoded
multipart/form-data
text/plain
application/octet-stream
HTTP est un protocole au format texte, il est possible de le tester avec un client TCP comme telnet. Le service HTTP Bin permet de tester plusieurs types de requêtes-réponses HTTP.
telnet httpbin.org 80
Trying 34.227.213.82...
Connected to httpbin.org.
Escape character is '^]'.
GET / HTTP/1.1
Host: httpbin.org
...
GET /xml HTTP/1.1 # Plusieurs formats: /json, /html
Host: httpbin.org
...
POST /anything?recipient=-1&subject=coucou! HTTP/1.1
User-Agent: telnet/demo
Content-Type: text/plain
Host: httpbin.org
Content-Length: 13
allo le monde
...
Pour élaborer des requêtes plus complexes, il existe des clients HTTP spécialisés comme cURL, httpie, Insomnia.rest ou l'extension VS Code Thunder Client.
Ce type d'outil est très utile pour expérimenter et déboguer les requêtes-réponses lors du développement d'un service web.
Pour nous permettre d'exprimer efficacement le format attendu pour les requêtes-réponses d'un service web, nous utiliserons la syntaxe suivante
VERBE PATH HTTP/1.1
Header1: Value1
Header2: Value2
Body...
=== Réponse
...
~~~ Réponse alternative
...
GET / HTTP/1.1
Accept: text/plain
===
...La blague...