Un webhook est un type de service qui permet à un programme d’envoyer des données à un autre dès qu’un événement particulier se produit. Les webhooks sont utiles dans les cas où un code spécifique doit être exécuté lorsqu’un événement se produit. Par exemple, nous pouvons définir un webhook pour déclencher un point de terminaison lors de la confirmation d’un bon de commande, de la création d’un nouveau produit, de la vente d’un produit via pos, etc. Ainsi, au lieu d’avoir à vérifier chaque minute pour voir s’il y a un nouvel événement qui se produit ou non , nous pouvons indiquer à l’application que cet événement s’est produit lors de l’utilisation de webhooks. Dans ce tutoriel, nous allons créer un programme pour recevoir les webhooks Github en Python.
Pourquoi choisir Flask pour créer des webhooks
Le framework Web Flask est un excellent moyen de commencer à développer une application car il est relativement facile à démarrer, mais il est également facile de rester bloqué si vous ne savez pas ce que vous faites. Flask est un framework Web qui nous aide à créer facilement des applications Web. Nous couvrirons la plupart des bases et expliquerons comment écrire une application de démonstration rapide pour tester notre configuration. De plus, cet article est censé être un peu avancé, vous devez donc être familiarisé avec les bases de Flask. Avant de commencer à coder, nous devons comprendre comment fonctionne un webhook. Présentation d’un webhook À la base, un webhook n’est qu’une URL. Ainsi, un webhook n’est qu’une URL pointant vers un point de terminaison. Le point de terminaison est normalement un répertoire mais peut être une URL, une console ou une autre application. Le point de terminaison peut être démarré par le serveur ou manuellement. Le Flask permet de recevoir très facilement des webhooks github en python.
Installation des prérequis
Pour que cette application soit opérationnelle, assurez-vous d’avoir effectué les opérations suivantes :
- Téléchargez et installez Python
- Télécharger et configurer pip
- Installer le flacon
Configurer un environnement virtuel
Un environnement comme Virtualenv est une option pour séparer nos environnements de développement, mais nous devons installer le gestionnaire de packages pip pour configurer notre environnement. L’utilisation de pip nécessiterait que vous ayez installé Python 2.7.
Pour installer pip, ouvrez un terminal et exécutez la commande suivante :
pip3 install virtualenv
Vous pouvez vérifier la version de l’environnement virtuel à l’aide de cette commande :
virtualenv --version
Pour créer un nouvel environnement virtuel, accédez au répertoire de votre application et exécutez la commande tr suivante :
python3 -m venv --system-site-packages .\env
Activez votre environnement en :
.\env\Scripts\activate
Installation de Ngrok
Désormais, pour configurer votre webhook, votre application doit être en ligne. Être en ligne est le seul moyen pour votre application et le fournisseur de webhook de communiquer entre eux. Pour surmonter cet obstacle, vous pouvez installer ce logiciel appelé Ngrok. C’est un logiciel gratuit qui aide à exposer votre serveur local au monde en configurant la redirection de port.
Pour installer Ngrok, rendez-vous sur leur page de téléchargement officielle ou exécutez la commande suivante :
pip3 install ngrok
pip3 install flask
Création de l’application
Pour ce didacticiel, nous allons simplement créer une application simple d’une seule page. Créez un fichier d’application appelé webhook_test.py (vous pouvez le nommer comme vous le souhaitez).
from flask import Flask #importing Flask to make everything work
app = Flask(__name__)
@app.route('/')
def root(): # function
return 'Hello World!'
if __name__ == '__main__':
app.run(debug=True)
Pour vérifier si tout fonctionne, lancez cette application dans le terminal où se trouve votre fichier d’application :
python3 wenhook_test.py
Si cela a fonctionné avec succès, vous devriez voir une réponse comme celle-ci :
linux@linux-System-Product-Name:~/Desktop/Flask_Tutorial$ python3 webhooks_test.py
* Serving Flask app 'webhooks_test' (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: on
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger PIN: 750-408-886
Maintenant, pour voir votre application en cours d’exécution, ouvrez ce lien « http://127.0.0.1:5000/ » dans un navigateur.
Création du Webhook
Pour ce tutoriel, nous allons utiliser des webhooks de Github, car il est très simple à comprendre et à utiliser. Maintenant, pour recevoir des informations via Github, nous devrons créer une méthode qui fera exactement cela. Et pour ce faire, éditez votre dossier de candidature comme ceci :
from flask import Flask
from flask import request
from flask import json #importing json cause that’s what we’re going to be working with
app = Flask(__name__)
@app.route('/')
def root():
return 'Hello World!'
@app. route('/hooktest', methods=['POST']) # ‘/hooktest’ specifies which link will it work on
def hook_root():
if request.headers['Content-Types'] == 'application/json': # calling json objects
return json.dumps(request.json)
if __name__ == '__main__':
app.run(debug=True)
C’est ça! Maintenant, si vous l’exécutez et allez sur « http://127.0.0.1:5000/hooktest », vous verrez une erreur indiquant « Méthodes non autorisées » mais ça va, nous n’avons pas à nous en soucier.
Mettre votre candidature en ligne
Maintenant, pour que votre application se connecte à Github, il va falloir la mettre en ligne ; et c’est pourquoi nous avons installé Ngrok. Pour l’utiliser, exécutez la commande suivante dans votre terminal où se trouve votre application et exécutez la commande suivante :
Remarque : assurez-vous que votre serveur local est en cours d’exécution avant d’exécuter cette commande.
Ngrok http 5000 # 5000 is your port number
Après cela, vous verriez une réponse quelque chose comme ceci:
ngrok by @inconshreveable (Ctrl+C to quit)
Session Status online
Session Expires 1 hour, 57 minutes
Version 2.3.40
Region United States (us)
Web Interface http://127.0.0.1:4040
Forwarding http://6f50-106-77-191-55.ngrok.io -> http://localhost:5000
Forwarding https://6f50-106-77-191-55.ngrok.io -> http://localhost:5000
Connections ttl opn rt1 rt5 p50 p90
0 0 0.00 0.00 0.00 0.00
Cela signifie que votre serveur local est maintenant en ligne ! Pour voir cela en action, visitez le lien fourni, qui est https://6f50-106-77-191-55.ngrok.io c’est mon cas.
Connexion à Github
Suivez ces étapes pour obtenir un webhook Github :
- Créez votre propre référentiel et ouvrez-le.
- Accédez aux paramètres de votre référentiel.
- Ouvrez la section « Webhooks » puis cliquez sur le bouton « Ajouter des Webhooks ».
- Dans la section « URL de la charge utile », entrez l’URL générée par Ngrok.
- Sélectionnez « application/json » dans la liste déroulante « Type de contenu ».
- Laissez la section « Secret » vide.
- Dans la section « Quels événements souhaitez-vous déclencher ce webhook ? » section, sélectionnez tout ce que vous voulez, mais pour des raisons de simplicité, nous sélectionnerons « Laissez-moi sélectionner des événements individuels ». et sélectionnez uniquement « Problèmes ».
- Appuyez enfin sur le bouton « Mettre à jour le webhook ».
Maintenant, si vous publiez un problème et le référentiel, vous obtiendrez un résultat sur votre terminal ; la réponse serait quelque chose comme ceci:
127.0.0.1 - - [29/Sep/2021 15:35:22] "POST /github HTTP/1.1" 200 -
L’écriture de webhooks ne doit pas être une tâche difficile. De nombreuses améliorations peuvent être apportées à cet égard et il est conseillé de demander des conseils supplémentaires à ce sujet.
Conclusion
L’article ci-dessus a expliqué comment configurer un webhook Flask de base. Nous avons passé en revue les concepts de base pour utiliser un webhook Flask, y compris la publication d’événements sur le serveur, la définition d’un gestionnaire d’événements et l’utilisation du mot-clé events. Si vous avez des questions ou des commentaires sur les webhooks Flask, n’hésitez pas à les laisser ci-dessous. J’espère que vous avez pu faire fonctionner le programme et que vous avez pu recevoir des webhooks Github en Python.
Voici quelques tutoriels utiles que vous pouvez lire :
- How to convert an image to 8-bit image
- How to create a web app using Pyramid framework
- Create various charts using Python
- Password generator using Python and Secrets
- Create API in Django Rest Framework Viewset
- Create Sudoku game in Python using Pygame