api网关中的响应模板不以美化格式返回json

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了api网关中的响应模板不以美化格式返回json相关的知识,希望对你有一定的参考价值。

我在api网关中添加了集成响应模板,即弹性搜索引擎的响应,我试图解析该响应以删除其他元数据,如命中等

#set($esOutput = $input.path('$.hits.hits'))
#set($orders = [])
#foreach( $esOrder in $esOutput )
 #set($order = $esOrder['_source'])
 #set($response = $orders.add($order) )
#end
$orders

我面临的问题是响应模板返回的响应按以下顺序排列:

[{user = kimchy,post_date = 2009-11-15T14:12:12,message =试用Elasticsearch}]

但我希望它以适当的json格式。需要在这里修复。

这是我从弹性搜索得到的:

 {
  "took" : 1,
  "hits" : {
    "hits" : [
      {
        "_id" : "1",
        "_score" : 1.0,
        "_source" : {
          "user" : "kimchy",
          "post_date" : "2009-11-15T14:12:12",
          "message" : "trying out Elasticsearch"
        }
      }
    ]
  }
}
答案

这是我通过在API网关集成响应映射模板中编写VTL代码来解决它的方法:

#set($esOutput = $input.path('$.hits.hits'))
#set($one=1)
#set($length= $esOutput.size()-$one)
[
#foreach( $esOrder in $esOutput )
 #set( $order = "$.hits.hits["+$foreach.index+"]._source" )
 #set($dispatchOrder =$input.json($order))
 $dispatchOrder
  #if( $foreach.index<$length )
  ,
 #end
#end
]

以上是关于api网关中的响应模板不以美化格式返回json的主要内容,如果未能解决你的问题,请参考以下文章

为每个 REST API 响应美化或返回漂亮的 JSON 响应

返回 JSON 响应的 SOAP Web 服务的 URL 格式

使用 REST 模板和 JSON 响应格式在 Spring MVC 上返回 Http Status 500

Laravel Dingo Api - 如何从 API 控制器返回 JSON 格式的错误响应?

模板中的 Django Json 响应格式

json AWS API网关响应