PythonでFlaskを使用しWebhookを受信してみます。
今回はFlaskを用います。このライブラリ・モジュールは、Pythonの標準ライブラリではありませんので、事前にインストールする必要はあります。
■Python
今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)
■Flaskを使用しWebhookを受信する
では、早速Flaskを使用しWebhookを受信するスクリプトを書いていきます。
■コード
from flask import Flask, request, abort app = Flask(__name__) @app.route('/webhook', methods=['POST']) def webhook(): if request.method == 'POST': print(request.json) return 'success',200 else: abort(400) if __name__ == '__main__': app.run()
「from import」でflaskのFlask, request, abortを呼び出します。
その後、「app = Flask(__name__)」でFlaskインスタンスを作成します。作成後、Flaskアプリのルーティングを行うために、「@app.route(‘/webhook’, methods=[‘POST’])」とし、URL(’/webhook’)はdef文を用いたwebhookという関数に関連付け。なお、route()の関数(methods)引数,パラメータを「POST」と指定することで、POSTメソッドを使用し、送信できるようになります。
今回定義したwebhookという関数は、if〜else文を用いて、もしPOSTメソッドを使用しデータをURLに送信した場合は、print()を用いてデータをjson形式で出力し、returnとして「’success’,200」を返します。それ以外の場合は、「400 Bad Request」というリクエストを処理しない、もしくはできないという例外が発生します。
最後に「if __name__ == ‘__main__’:」と、run()を用いて、ローカル開発サーバーでアプリケーションを実行します。
このスクリプトを「server_test.py」という名前で、Pythonが実行されている作業ディレクトリ(カレントディレクトリ)に保存します。
■送信するデータを作成する
保存後、送信するデータを作成します。
■コード
import requests import json webhook_url = 'http://127.0.0.1:5000/webhook' data = {'名前':'テスト太郎', '性別':'男性', 'URL':'https://laboratory.kazuuu.net/'} r = requests.post(webhook_url,data=json.dumps(data),headers={'Content-Type':'application/json'})
内容は、「Pythonでrequestを使用しWebhookを送信する」という記事を公開しましたが、その記事内のコードを同じにします。
■実行・検証
このスクリプトを「web_h.py」という名前で、同じくPythonが実行されている作業ディレクトリ(カレントディレクトリ)に保存し、コマンドプロンプトを起動します。
* Serving Flask app "server_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: off * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
起動後、まずは「server_test.py」の方を実行します。実行すると、ローカル開発サーバーが起動し、アプリケーションが実行されます。
実行後、今度は新たにコマンドプロンプトを起動します。起動後、今度は「web_h.py」を実行します。実行すると、何も出力されません。
何も出力されませんが、ローカル開発サーバーが起動中のコマンドプロンプト上を確認すると、Webhookを受信し、データが出力されていることが確認できました。
コメント