Как использовать Hal + Json с AWS AppSync

Мой бэкэнд восстанавливает json, используя тип мультимедиа hal + json (rest api). Проблема здесь в том, что преобразователь скорости AWS AppSync возвращает:

Лексическая ошибка, обнаружена: \ "_ \" (95), после: \ ". \" В не задано [строка 8, столбец 28] "

Поскольку узел типа носителя начинается с подчеркивания, например:

{  
     "_embedded":{  
         "vehicle-assemblers":[...]
     }
}

Я считаю, что движок, который использует AppSync, жалуется на переменную, начинающуюся с подчеркивания.

«Настроить шаблон сопоставления запросов» (AWS Edit Resolver)

 ## Raise a GraphQL field error in case of a datasource
 #if($ctx.error)
   $util.error($ctx.error.message, $ctx.error.type)
 #end
 ## If the response is not 200 then return an error.
 #if($ctx.result.statusCode == 200)
    #set($response = $util.parseJson($ctx.result.body))  
    $util.toJson($response._embedded.vehicle-assemblers) ##line 8  
 #else
    $utils.appendError($ctx.result.body, $ctx.result.statusCode)
 #end

Кто-нибудь знает, как решить эту проблему?


person Marcelo Maico    schedule 11.01.2019    source источник


Ответы (1)


Я смог решить

#if($ctx.error)
  $util.error($ctx.error.message, $ctx.error.type)
#end

#if($ctx.result.statusCode == 200)
    #set($response = $util.parseJson($ctx.result.body))
    #set($vehicles = $util.toJson($response["_embedded"]["vehicle-assemblers"]))
    {
      "items": $vehicles  
    }    
#else
    $utils.appendError($ctx.result.body, $ctx.result.statusCode)
#end
person Marcelo Maico    schedule 14.01.2019