PythonでFlaskを使用しWebhookを簡単に受信する

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を受信し、データが出力されていることが確認できました。

コメント

タイトルとURLをコピーしました