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 :

  1. Téléchargez et installez Python
  2. Télécharger et configurer pip
  3. 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 :

  1. Créez votre propre référentiel et ouvrez-le.
  2. Accédez aux paramètres de votre référentiel.
  3. Ouvrez la section « Webhooks » puis cliquez sur le bouton « Ajouter des Webhooks ».
  4. Dans la section « URL de la charge utile », entrez l’URL générée par Ngrok.
  5. Sélectionnez « application/json » dans la liste déroulante « Type de contenu ».
  6. Laissez la section « Secret » vide.
  7. 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 ».
  8. 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 :