概要
ローカルホストで実践により近い形でwebhookの検証をしたかったが、わからなかったため、メモメモ。
そもそもwebhookとは?
Webhookは、複数のWebサービスを連携するための仕組みです。 kintoneでWebhookを設定すると、次の操作が行われたときに、そのことを外部のWebサービスに通知できます。 Webhookを利用すると、kintoneと外部のWebサービスを連携できます。(Google)
ローカルホストでなぜPOSTを受け取れないのか
Webhookの説明を見ると「通知する、Webhookを送る」などの言葉が用いられているが、
これはPOSTリクエストのことを指している。WEBサーバー側から自分のパソコンをlocalhostで指定してしまうと、WEBサーバー自体を指してしまうため、localhostを指定することで送信できないということがある。よく検索出てくるIPアドレス指定すると良いよね!みたいなのはlocalhostなどを刺さないために必要。
検証の主な方法
ここでWebhookの検証に用いることができる主な方法を確認しておく。
- リモートにサーバーを自分で立ててlocalhostに転送する
- 様々なサービスを使ってlocalhostに転送する。
1. リモートにサーバーを自分で立ててlocalhostに転送する
こちらについては以下の記事で開設されていたため、そちらに任せることにします。
ローカル環境のサーバで Webhook を受け取る方法 - @hoto17296 さん
2. 様々なサービスを使ってlocalhostに転送する。
以下で紹介しているサービスやツールたちは結局のところ以下の流れでlocalhostに転送している。
- webhookのURLの向き先をWEB上に存在しているツールのURLにしておく
- ツールがwebhookの内容を受け取り、それをlocalhostに転送
- localhostはそれを受け取ってhogehogeする
ultrahook
Railsの場合は「ultrahook」というgemが用意してあり、これを利用することで、外部からのwebhookを受け取って、検証を行うことができる。
ngrok
こちらも一部の方には結構有名なサービス。自分は初めて知った時とても便利と感動した。
以下の記事は導入するのに役立ったと思う。ありがとうございます。
注意点!!!!!!!!!!!!!!!!!!!
上記二つのサービスもそうだが、基本的にはネット上に公開されているものを使ってテストをしている。そのため、セキュリティを締めておかないと、クラックし放題となる。セキュリティを締めるべきところについては他の記事に任せるが、最低限必要と言われるところはやっておくこと。
参考
Webhookとは? - @soarflat さん
ローカル環境のサーバで Webhook を受け取る方法 - @hoto17296 さん
StripeのwebhookをUltraHook使ってローカルで受け取るやつ - @sio_9 さん
ローカル環境でWebhookが使える UltraHook - はてなブログ
GitHubのWebhookをPHPで受け取る練習 - はてなブログ