Les webhooks sont un mécanisme de notification entre applications. Par exemple GitHub peut notifier une application via une requête http après chaque commit sur un repository. L’application notifiée peut ainsi effectuer une opération immédiatement après le commit. Voici l’écran de GitHub permettant d’ajouter un webhook :
Le problème des webhooks est que le service externe (ici GitHub) ne peut faire une requête que sur une url accessible via internet (adresse publique). Hors pendant le développement, le poste du développeur a rarement une adresse publique. Dans cette configuration il est donc compliqué de tester l’intégration avec l’application externe. C’est là que ngrok intervient :)
Ngrok permet de créer un tunnel entre le poste de développement et les serveurs de ngrok. Une fois le tunnel créé, on obtient une URL public du type “sample. ngrok. com” qui pointe au final vers notre machine. On peut donc utiliser cette url pour tester l’intégration avec un service externe.
Source : https://ngrok.com
Comment utiliser ngrok ?
Premièrement il faut créer un compte gratuit sur leur site. Cela permet d’obtenir le token d’authentification nécessaire pour utiliser l’application :
On enregistre le token obtenu sur notre poste :
ngrok.exe authtoken <token>
Ensuite il faut lancer l’outil en spécifiant le protocole à utiliser (http dans notre cas) et le port de l’application sur notre machine :
ngrok.exe http 4242
Si tout se passe bien vous devriez voir quelque chose comme ça :
Vous pouvez maintenant ouvrir l’interface d’inspection à l’url http://localhost:4040
. Cette console affiche toutes les requêtes http et permet également de les rejouer au besoin (pratique pour le dév).
Voilà, il ne reste plus qu’à utiliser l’url publique fourni par ngrok (ici http://859ca31a.ngrok.io
) pour accéder au site.
Note : IIS Express n’accepte pas les requêtes venant d’une machine distante par défaut. Cela est contournable, mais il est surement plus simple d’utiliser directement IIS.
Pour des besoins plus avancés, il existe une version payante de ngrok. Elle permet par exemple de réserver un sous-domaine, mais pour de simples tests la version gratuite est suffisante.
Conclusion
Ngrok permet d’exposer sa machine sur internet en 2 minutes. Cela est très pratique pour tester les webhooks, mais cela a aussi d’autres usages. Vous pouvez par exemple tester une application mobile qui utilise les web services hébergés sur votre machine de dév. Avec un peu d’imagination vous y trouverez surement d’autres cas d’utilisation.
Bref, un programme à mettre dans sa boite à outils :)