如何测试本地环境和外部服务(webhooks)之间的集成

How to test integrations between local environment and external services (webhooks)

自从我开始开发 Web 应用程序以来,我总是发现检查外部服务请求并使用 "realistic" 场景测试我的应用程序非常烦人。我们必须将我的本地开发环境暴露给外部服务的解决方案是什么?

我正在使用 Laravel Homestead and/or PHP 开发服务器

在寻找最终答案之前,我找到了一个解决方案,它以一种高效、免费的方式解决了所有这些问题,这就是 Ngrok, a product created by Alan Shreve -- which has worked on giants like Microsoft and Twilio. Alan wrote about the creation of Ngrok and an article on his blog 他将产品描述为:

"Ngrok is a tunneling, reverse proxy that establishes secure tunnels from a public endpoint to a locally running network service while capturing all traffic for inspection and replay. It is an open-source project on GitHub."

让我们开始吧:

好吧,既然你对这个工具有了一点了解,也知道我为什么找到它,让我们来演示如何公开一个本地环境以允许 third-party 服务通过 Webhook 向本地环境提交请求是非常简单和我将要介绍的两个解决方案已经过测试并适用于以下场景:

  • 场景 1:使用 PHP 7.2.6 开发服务器的 PHP 项目
  • 场景 2:使用 Laravel 开发服务器的 Laravel (PHP) 项目(php artisan 服务)
  • 场景 3:使用 Laravel Homestead
  • 的 Laravel (PHP) 项目

要做到这一点,只需按照以下步骤操作:

  1. 访问 Ngrok website
  2. 注册或登录
  3. 根据您的OS
  4. 下载客户端
  5. 按照您下载的同一页面上显示的说明对下载的客户端进行身份验证。

对于前两种情况只需 运行 以下命令

ngrok http <host>:<port>

例如:ngrok http 127.0.0.0.1:666

对于第三种情况(如果你使用域访问homestead Ex: homestead.test你必须重写host-header。不过不用担心,实现它只需将上面的命令增加到类似的东西)

ngrok http <homestead_host_ip>:<port> -host-header=<homestead_domain>

示例:ngrok http 192.168.10.10:80 -host-header=homestead.test

好了,现在只需在 Webhook 中指向 Ngrok 生成的 URL 即可测试并享受这个精彩的解决方案。