0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

いろんな方法でAPI Gatewayから返ってくるレスポンスを確認してみる

Posted at

はじめに

本記事ではAPI Gatewayに対してPOSTリクエストを送った際に、返ってくるレスポンス内容を6つの方法で確認していきます。

前提

  • POSTメソッドを持つAPI Gatewayが作成されている事
  • Lambdaが作成されており、API Gatewayと連携されている事

本記事ではLambdaのソースとしては下記のように簡単なレスポンスを返すだけのものを使用します。

Lambdaのソース
lambda_function.py
import json

def lambda_handler(event, context):
    # リクエストボディを取得
    body = event.get('body', {})
    
    # レスポンスボディを作成
    response_body = {
        "message": "Hello from Lambda!",
        "input": body
    }
    
    # レスポンスを返す
    return {
        'statusCode': 200,
        'headers': {
            'Content-Type': 'application/json'
        },
        'body': json.dumps(response_body)
    }

環境

python:3.12
postman:11.4.0

1.マネジメントコンソールから確認する

API Gateway > API > リソース > 対象のAPIを選択し、テストタブからリクエストを送ってみます。

リクエスト本文
{
    "key1": "value1",
    "key2": "value2",
    "key3": "value3"
}

レスポンス本文の項目でlambdaからのレスポンスを確認できました。

image.png

2.Postmanで確認する

POSTメソッド選択しAPIのリンクを入力します。
リクエストbody入力後、Sendボタンを押下しAPIのエンドポイントにリクエストを送ってみます。
画像下の赤枠部分のように、返ってきたレスポンスの内容を確認できました。

image.png

3.cmd:curlでAPIのエンドポイントを叩いてみる

コマンドプロンプトを使用しAPIのエンドポイントに対して、headerとbody情報を追加したPOSTリクエストを送ってみます。

curl -X POST APIのエンドポイントのリンク -H "Content-Type: application/json" -d "{\"key1\": \"value1\", \"key2\": \"value2\", \"key3\": \"value3\"}"

実行すると下記のようにAPIからのレスポンスを確認できました。

{"statusCode": 200, "headers": {"Content-Type": "application/json"}, "body": "{\"message\": \"Hello from Lambda!\", \"input\": {\"key1\": \"value1\", \"key2\": \"value2\", \"key3\": \"value3\"}}"}

4.PowerShell:Invoke-RestMethod でAPIのエンドポイントを叩いてみる

PowerShellを使用し、APIのエンドポイントに対してヘッダーとbody情報を追加したPOSTリクエストを送ってみます。

Invoke-RestMethod -Uri "APIのエンドポイントのリンク" -Method Post -Headers @{ "Content-Type" = "application/json" } -Body (@{ "key1" = "value1"; "key2" = "value2"; "key3" = "value3" })

実行すると下記のようにAPIからのレスポンスを確認できました。

statusCode headers                          body
---------- -------                          ----
       200 @{Content-Type=application/json} {"message": "Hello from Lambda!", "input": "key3=value3&key1=value1&key2=value2"}   

5. スクリプトを作成し確認する

Pythonのrequestsモジュールを使用して、APIにPOSTリクエストを送るだけの簡単なスクリプトを作成します。
スクリプトを実行する事でレスポンスを確認します。

main.py
import requests
import json

# API エンドポイントの URL
url = "API エンドポイントの URL"

# リクエストボディのデータ
data = {
    "key1": "value1",
    "key2": "value2",
    "key3": "value3"
}

# ヘッダー情報
headers = {
    "Content-Type": "application/json"
}

# POST リクエストの送信
response = requests.post(url, headers=headers, data=json.dumps(data))

# レスポンスの内容を表示
print("Status Code:", response.status_code)
print("Response Body:", response.text)

スクリプトを実行すると、ステータスコードとレスポンス内容を確認できました。

Status Code: 200
Response Body: {"statusCode": 200, "headers": {"Content-Type": "application/json"}, "body": "{\"message\": \"Hello from Lambda!\", \"input\": {\"key1\": \"value1\", \"key2\": \"value2\", \"key3\": \"value3\"}}"}

6.AWS CLIを使う

cmd上でAWS CLIを使用し、API Gatewayのエンドポイントを叩いてみます。

aws apigateway test-invoke-method --rest-api-id 対象のAPIのID --resource-id 対象のAPIのリソースID --http-method POST --path-with-query-string "/ステージ名" --body "{\"key1\": \"value1\", \"key2\": \"value2\", \"key3\": \"value3\"}"

スクリプトを実行するとステータスコードとレスポンス内容を確認できました。

{
    ~~~
    "status": 200,
    "body": "{\"statusCode\": 200, \"headers\": {\"Content-Type\": \"application/json\"}, \"body\": \"{\\\"message\\\": \\\"Hello from Lambda!\\\", \\\"input\\\": {\\\"key1\\\": \\\"value1\\\", \\\"key2\\\": \\\"value2\\\", \\\"key3\\\": \\\"value3\\\"}}\"}",
    ~~~
}

終わりに

本記事ではAPI GatewayにPOSTリクエストを送った際のレスポンスの確認方法をいくつか見ていきました。
目的や環境に応じて最適な方法を選んでいきたいです。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?