ものづくりのブログ

うちのネコを題材にしたものづくりができたらいいなと思っていろいろ奮闘してます。

【Cloud Functions】@functions_framework.http の request オブジェクト

Google Cloud Functions で @functions_framework.http を使用する場合、request オブジェクトにどんな情報が含まれているかここにメモします。

request オブジェクトで取得できる情報

HTTP メソッド request.method リクエストのHTTPメソッドを取得します(例:GET, POST, PUT, DELETEなど)。
ヘッダー request.headers リクエストのすべてのHTTPヘッダーが格納されている辞書型オブジェクトです。特定のヘッダーを取得するには、request.headers.get("ヘッダー名")を使用します。
URL パラメータ request.args URLに含まれるクエリパラメータが格納されている辞書型オブジェクトです。例:/api?param1=value1の場合、request.args.get("param1")でvalue1を取得できます。
フォームデータ request.form application/x-www-form-urlencoded形式で送信されたPOSTデータが格納されている辞書型オブジェクトです。HTMLフォームから送信されたデータを取得するのに使用します。
JSON データ request.get_json() リクエストボディがJSON形式の場合にデータを取得します。リクエストがJSON形式でない場合はNoneが返されます。
リクエストボディ request.data リクエストボディの生データをバイト列として取得します。
ファイル request.files ファイルアップロード時に使用される辞書型オブジェクトです。ファイルはrequest.files.get("ファイル名")で取得できます。
リモートアドレス request.remote_addr クライアントのIPアドレスを取得します。
URL パス request.path リクエストのパス部分を取得します(例:/api/v1/resource)。
完全なURL request.url リクエストされた完全なURLを取得します。
ホスト request.host リクエストが送信されたホスト名を取得します。
ユーザーエージェント request.user_agent クライアントのユーザーエージェント情報を取得します。
クッキー request.cookies リクエストに含まれるすべてのクッキーが格納されている辞書型オブジェクトです。特定のクッキーを取得するには、request.cookies.get("クッキー名")を使用します。

サンプル

import functions_framework

@functions_framework.http
def my_function(request):
    # HTTPメソッドを取得
    method = request.method

    # ヘッダーを取得
    content_type = request.headers.get("Content-Type")

    # URLパラメータを取得
    param1 = request.args.get("param1")

    # JSONデータを取得
    json_data = request.get_json()

    # リクエストボディの生データを取得
    raw_data = request.data

    # クライアントのIPアドレスを取得
    client_ip = request.remote_addr

    # ユーザーエージェントを取得
    user_agent = request.user_agent

    # クッキーを取得
    session_cookie = request.cookies.get("session")

    return f"Method: {method}, Content-Type: {content_type}, Param1: {param1}, IP: {client_ip}", 200