Как удалить схему JSON из ответа шлюза AWS API? - PullRequest
0 голосов
/ 30 января 2019

Я использую AWS API-шлюз в качестве прокси для DynamoDb в соответствии с этой документацией: https://aws.amazon.com/blogs/compute/using-amazon-api-gateway-as-a-proxy-for-dynamodb/

При тестировании в API-шлюзе результат выглядит следующим образом:

{
  "Count": 6,
  "Items": [
    {
      "mini_description": {
        "S": "A veg sandwich"
      },
      "item_description": {
        "S": "A veg sandwich filled with a lot of healthy vegetables"
      },
      "id": {
        "S": "6d0e0870-......-c5ccfbc0424c"
      },
      "image_url": {
        "S": "https://......png"
      },
      "price": {
        "N": "25"
      },
      "name": {
        "S": "Veg Sandwich"
      },
      "item_type": {
        "S": "Main Dish"
      }
    },
    {
      "mini_description": {
        "S": "A normal hot coffee"
      },.....

Мне нужно это в следующем формате:

{
  "Count": 6,
  "Items": [
    {
      "mini_description": "A veg sandwich",
      "item_description": "A veg sandwich filled with a lot of healthy vegetables",
      "id": "6d0e0870-.......-c5ccfbc0424c",
      "image_url": "https://.......png",
      "price": 25,
      "name": "Veg Sandwich",
      "item_type": "Main Dish"
    },
    {
      "mini_description": "A normal hot coffee",............

Есть ли какая-либо процедура, чтобы изменить это через ответ интеграции шлюза API?

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Я добился этого с помощью следующего шаблона отображения в ответе интеграции метода GET в шлюзе API:

#set($inputRoot = $input.path('$'))
{
  "Items": [
#foreach($elem in $inputRoot.Items)
    {
      "mini_description" : "$elem.mini_description.S",
      "item_description" : "$elem.item_description.S",
      "id" : "$elem.id.S",
      "image_url" : "$elem.image_url.S",
      "price" : $elem.price.N,
      "name" : "$elem.name.S",
      "item_type" : "$elem.item_type.S"
    }#if($foreach.hasNext),#end

#end
  ]
}
0 голосов
/ 30 января 2019

Невозможно восстановить данные, если у вас есть API-шлюз, идущий непосредственно к DynamoDB.Однако вы можете добавить функцию Lambda между шлюзом API и DynamoDB, а затем использовать функцию unmarshall из Javascript SDK (или любого другого предпочтительного языка) для удаления элементов JSON DynamoDB.

...