AWS LambdaとAPI Gatewayを使ってAPIを実装するユースケースは多いと思います。
自分がLambda関数のテスト機能を使う際に、リクエストの「body
」の書き方で詰まってしまったので、その時の解決法を共有します。
問題点
テスト機能を使ってLambda関数を実行しようとした際、以下のような形式でリクエストを送信したところ、エラーが発生しました。
{
"body":
{
"userId":"test20240822@test.com",
"displayName":"test20240822",
"email":"test20240822@test.com"
}
}
この形式で送ると、Lambda関数内でbody
の内容がパースされず、以下のようなエラーメッセージが表示されることがあります:
{
"errorMessage": "Could not parse request body into json: Unexpected character (\"userId\":\"test20240822@test.com\")"
}
正しい書き方
API Gatewayを通してリクエストを送信する際には、このようにオブジェクト形式でbodyを指定するのではなく、文字列形式で送信する必要があります。
正しいリクエスト形式は以下のようになります。body
は文字列として送信する必要があります。
{
"body": "{\"userId\":\"test20240822@test.com\",\"displayName\":\"test20240822\",\"email\":\"test20240822@test.com\"}"
}
まとめ
-
body
は文字列形式で渡す必要がある -
JSON
オブジェクトをそのまま渡すとエラーが発生するため、エスケープされた文字列に変換する必要がある
以上です!