Ludovic Frank - Développeur indépendant

Un microservice pour générer des QR codes avec un simple lien HTTP

ionicons-v5-k Ludovic Frank 1 avr. 2024
1237 lectures Niveau : Débutant confirmé

Eh salut ! 😁,

Merci d'avoir cliqué sur cet article, j'espère qu'il vous plaira 😉.

Bon, euh... on n’est pas censé être au printemps là ? Non par ce que, il fait froid dans le grand est...

Ah oui, c'est vrai, on n’est toujours pas là pour ça 😮, à croire que je le fais exprès hein 😛 (oui, je le fais complètement exprès).

Cette semaine ça va être un petit article cool, les gros articles reviendront, vous n’inquiétez pas, mais cette semaine, on va juste aller chercher un microservice qui peut être "deal breaker" pour vos applications.

On va tout simplement mettre en place un microservice, utilisable par n'importe laquelle de nos applications pour générer des QR codes.

Pourquoi ai-je besoin de générer des QR codes ?

Comme toujours, chaque article vient de quelque chose qui se passe dans ma vie 🙂, déjà depuis 2020 les QR codes, c'est passé d'un truc plutôt confiné au monde des technophiles à un truc que tout le monde utilise.

En ce qui me concerne les QR codes je les ai expérimentés pour plein de choses, mais globalement rien qui soit rester longtemps sauf pour ... l'application de réservation 😮.

Actuellement elle permet l'affichage du menu du restaurant dans plusieurs langues, les clients ont un QR code par langues et hop, ils ont directement le menu dans leurs langues...

Mais, cet article ne vient pas de là...

Comme vous le savez peut-être déjà, en ce moment j'adapte mon application de réservation pour la proposer à d'autres restaurants... et j'ai mis les QR codes au centre d'une des fonctionnalités.

Il faut bien comprendre que dans le monde des gens qui ne sont pas comme nous, à savoir qui sont pas à fond dans la technologie, des choses que nous nous trouvons simples, pour eux ce n’est pas si évident, et, c'est normal.

Dans cette optique, l'application de réservation permet de télécharger un QR code qui en fait est un lien vers le processus de réservation, et hop, il suffit de l'intégrer à un document Word ou n'importe quelle création graphique et c'est parti, la clientèle qui passe devant le restaurant peut réserver ou consulter le menu.

Mais le truc, c'est que je trouvais ça pas encore assez simple, créer le document Word, ça prend du temps... et si, on créait directement un PDF prêt a être imprimé, avec un texte clair qui explique qu'en scannant le QR code on peut réserver ? Et en plus on y ajoute le logo du restaurant…

Voilà, là ça me plaît, c'est simple et fonctionnel, pas de fioriture, juste un clique... Pour le PDF j'ai utilisé " WKHTMLToPdf" avec le bundle "KnpSnappyBundle". Et évidemment, pour le QR code, le microservice dont je vous parle dans cet article.

Pour les plus curieux d'entre vous, j'ai fait une petite vidéo sur mon LinkedIn.

QRServe, le microservice

Sans plus attendre, voici le microservice que j'utilise : QRServe.

C'est du GO (comme Docker 😛), donc, des binaires statiques, ça tourne n'importe où... on verra comment je le déploie dans le prochain paragraphe, mais pour l'heure, comment ça marche ?

Il vous suffit de faire une simple requête HTTP par exemple dans une balise "img" HTML, avec dedans trois paramètres :

  • Data : "?data=URL" sachant que URL, il va falloir utiliser un "urlencode()" dessus, bah oui si vous mettez un & directement dans votre URL, vous vous doutez bien qu'il va y avoir comme un problème... c'est que vous allez passer votre argument directement au microservice.
  • Size : "?size=500", la taille du QR code en pixel, 600 c'est pas mal pour un QR code qui va être imprimé
  • Q : "?q=l" Le niveau de correction des erreurs (les QR Code ont des systèmes de correction d'erreur, par exemple si une partie du QR code est détruit), il est possible de définir cette valeur à l, m ou H, pour faible, moyen ou élevé.

Je vous vois venir, vous êtes du genre à en vouloir plus ... donc je vous ai déployé le microservice ici.
Si vous scannez ce QRCode, vous serez redirigé vers le site du Journal du Hacker 😁.

Utilisez cette instance pour vous amuser et tester, mais ne l'utilisez pas en production dans vos applications : déployez la vôtre 🙂.

Dockeriser QRServe

Bah évidemment… du GO qui tourne via un programme en GO, c'est GOCeption ... Ou alors c'est juste que c'est ultra pratique en fait 😁.

Le Dockerfile

Alors, mon Dockerfile est un peu vieux (est encore plus si vous lisez cet article dans le futur), donc, pensez à le mettre à jour, au moins ça vous servira de base 🙂 :

D'une simplicité remarquable, n'est-ce pas ? C'est beau la technologie 😍.

Le docker-compose.yml

Eh bien tant qu'à faire, je vous donne aussi le docker-compose.yml 🙂 :

Alors, oui l'image "silentk/qrserve” existe bien sur DockerHub, mais elle n'est plus à jour, donc vous le saurez 😛.

Également, ici je pars du principe que sur votre infra, il y a un "nginx-proxy”, alors les vrai devront l'adapter pour utiliser "Traefik", à vous de jouer 😁.

Conclusion

Et voilà, maintenant, vous pouvez utiliser des QRCode dans toutes vos applications...

C'était simple, non ?

En ce qui me concerne, je vous dis à la prochaine 🙂 et merci d'être arrivé jusqu'ici 😛.