はやさがたりない。

へっぽこぷろぐらまのメモログ

APIGateway の MappingTemplate

CURLでテストすると勝手に「Content-Type: application/x-www-form-urlencoded」がつけられるのでちゃんと自分でヘッダーを指定しましょう。

MappingTemplateが正常に動作するようになったらこんなエラーが返ってくるようになった。

{"message": "Could not parse request body into json: Unexpected character (\',\' (code 44)): expected a valid value (number, String, array, object, \'true\', \'false\' or \'null\')\n at [Source: [B@6812cadd; line: 4, column: 16]"}

指定したMappingTemplateはこんな感じ。

#set($inputRoot = $input.path('$'))
{
  "type": "$inputRoot.type",
  "address": "$inputRoot.address",
  "location": $inputRoot.location,
  "title": "$inputRoot.title",
  "description": "$inputRoot.description"
}

「$inputRoot.location」がnullの時とかにJSONとしてフォーマットがおかしくなるからこんなエラーが返ってくる。

一旦こんな形式にしてみたけども

#set($inputRoot = $input.path('$'))
{
  "type": "$inputRoot.type",
  "address": "$inputRoot.address",
  "location": {
    "lat": $inputRoot.location.lat,
    "lon": $inputRoot.location.lon
  },
  "title": "$inputRoot.title",
  "description": "$inputRoot.description"
}

これでも「$inputRoot.location.lat」がnullの時にNG。
でもここは数値にしたいから""でも囲うこともできない。
そうするとここでわざわざ#ifとかでnullの時は設定しないー的なことをする必要があるってこと?
だったらもうソース側でやればよくね?

いまいちよくわからん。