新米エンジニアの失敗再発防止メモ

自分そしてこの世界の皆が、同じ失敗をしないためのメモ

Twitterやってます!@rakuton_t
欲しいものリストのブタメンを送ってくれた方、ありがとうございます!

AWS API GatewayでPOSTリクエスト受け取り時にエラー

エラー内容

{"message": "Could not parse request body into json: Unrecognized token \'stripeToken\': was expecting (\'true\', \'false\' or \'null\')\n at [Source: [B@31769add; line: 1, column: 13]"}

原因

jsonをパース出来ないというエラーが発生しています。
リクエストは素のままだとJSONPath式なので、JSONPath式をjsonに変換する設定がAWS API Gateway側で必要になります。

解決策(設定方法)

1. API Gatewayの画面を開く
2. 対象のAPIを選択
3. 「POST」を選択
AWS API GatewayでPOSTリクエストについての設定1

4. 右側に出てくる、「統合リクエスト」をクリック
AWS API GatewayでPOSTリクエストについての設定2

5. 下の方にある「マッピングテンプレート」をクリック
AWS API GatewayでPOSTリクエストについての設定3

6. 「マッピングテンプレートを追加」をクリック
AWS API GatewayでPOSTリクエストについての設定4

7. 「application/x-www-form-urlencoded」を入力
8. チェックマークをクリックすると、更に下に入力欄が出てくるので、以下を入力

{
  "body" : $input.json('$')
}

AWS API GatewayでPOSTリクエストについての設定5

もしくは、テンプレート生成から作るでも有りですね。


9. 「保存」をクリック
10. 最後にAPIのデプロイをして設定を反映させる。

と、言ったところですね。

知らなきゃわかんなくね?

しかしこれ、どうやったら自己解決できるんですかね。
知らん人はマッピングテンプレートを追加するって発想にいきなりならんよね...
どのあたりの基礎があれば、こういった設定が当然であることに気づけますかね。
そして基礎がある人でも文法はいきなり分かりませんよね。ヘルプへのリンクすぐ下とかに貼っておいてくれれば良いのに。

API Gateway のマッピングテンプレートリファレンス - Amazon API Gateway

私の記事が役に立ったら、どうぞ何か買ってください!→ Amazon欲しいものリスト