On a tous un jour eut besoin de faire une requête HTTP. Enfin je pense 🙂
Récemment, j’ai eu ce besoin. Il y a les libs communes que l’on connaît tous :

  • Akka-http,
  • Play-WS,
  • STTP,
  • HTTP4S,
  • Scalaj-HTTP,
  • RosHTTP,
  • Dispatch,

Alors pourquoi chercher une nouvelle lib?

Dans mon cas, je suis tombé par hasard dessus. J’utilise pas mal le projet Amonite.. Le créateur de ce projet, Li Haoyi, a plein d’autres projets dans son sac, dont celui-là :

  • Requests-Scala.

Lorsque l’on regarde le get started du projet, c’est vraiment super simple à utiliser pour un besoin basic.

Un import, ces quelques lignes et le tour est joué :

[pastacode lang=”java” manual=”val%20r%20%3D%20requests.get(%22https%3A%2F%2Fapi.github.com%2Fusers%2Flihaoyi%22)%0A%0Ar.statusCode%0A%2F%2F%20200%0A%0Ar.headers(%22content-type%22)%0A%2F%2F%20Buffer(%22application%2Fjson%3B%20charset%3Dutf-8%22)%0A%0Ar.text%0A%2F%2F%20%7B%22login%22%3A%22lihaoyi%22%2C%22id%22%3A934140%2C%22node_id%22%3A%22MDQ6VXNlcjkzNDE0MA%3D%3D%22%2C…” message=”” highlight=”” provider=”manual”/]

Passer des paramètres est très simple aussi :

[pastacode lang=”java” manual=”val%20r%20%3D%20requests.get(%0A%22http%3A%2F%2Fhttpbin.org%2Fget%22%2C%0Aparams%20%3D%20Map(%22key1%22%20-%3E%20%22value1%22%2C%20%22key2%22%20-%3E%20%22value2%22)%0A)” message=”” highlight=”” provider=”manual”/]

Naturellement on peut aller beaucoup plus loin :

  • Streaming request
  • Multipart Uploads
  • Cookies management,
  • Redirects.
  • Sessions
  • etc.

Pourquoi créer une nouvelle librairie ?

Ce qu’explique l’auteur, c’est que les libs actuels utilisent beaucoup trop des mécanismes qui rendent l’utilisation complexes : implicite, opérateur, monades, etc..
Il pense aussi que peu de gens finalement, n’ont un réel besoin de gérer des traitements asynchrones.
Le besoin le plus courant est :

“je veux faire un get sur cet URL.”

Plus de détails sur les explications de l’auteur ici

A la base, ce projet est un portage de la librairie Python : Python-requests en Scala. D’ailleurs la librairie titre sa page Requests : HTTP for humans. Le message est clair ! 🙂

En résumé, ce n’est pas une révolution, mais une simplification. Elle permet en un temps record de passer de : je veux récupérer cette donnée, à ça y est! je l’ai.. maintenant comment je parse le résultat? 😀 .. (L’informatique, c’est une succession de petits problèmes :D)

requests-scala