Échange de données 1

Depuis très longtemps, la connectivité réseau est utilisé pour permettre à un programme d'exécuter une tâche sur une autre machine.

  • Plusieurs standards/protocoles sont utilisés
  • Demandent souvent de contrôler les 2 côtés de la communication
  • Imposent des technologies

HTTP

Youtube: HTTP 1 Vs HTTP 2 Vs HTTP 3!

API HTTP

En exposant l'interface logicielle, API, via le protocole HTTP, toutes sortes de clients peuvent en bénéficier.

  • Standard établi
  • Interopérabilité
  • Flexibilité

Paradigmes HTTP

Au fil du temps, plusieurs mécanismes ont été développé pour rendre plus efficace l'utilisation de HTTP dans différents contexte

  • RPC : Actions
  • REST : Ressources
  • gRPC
  • GraphQL
  • WebHooks
  • Server-Sent Events
  • WebSockets

Protocole HTTP

Requête
Réponse

Requête GET vs POST

GET

  • Récupérer des données
  • Paramètres via l'URL, query params /products?query=keyboard&sort=asc

POST

  • Envoyer des données
  • Paramètres via l'URL disponible ET via le body
    • application/x-www-form-urlencoded
    • multipart/form-data
    • text/plain
    • application/octet-stream

Exemples POST

Status

  • 1XX Information
  • 2XX Succès
  • 3XX Redirection
  • 4XX Erreur du client
  • 5XX Erreur du serveur

Status Codes

Références HTTP

Démo Telnet

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.

Contrats API

Pour nous permettre d'exprimer efficacement le format attendu pour les requêtes-réponses d'un service web, nous utiliserons la syntaxe suivante

http
VERBE PATH HTTP/1.1
Header1: Value1
Header2: Value2

Body...

=== Réponse

...


~~~ Réponse alternative

...
http
Exemple de contrat pour Dad Joke
GET / HTTP/1.1
Accept: text/plain

===

...La blague...

Go!