Für die Anforderung gibt es Zuordnungen leicht durch alles passieren, das ist eine Vor kurzem habe ich verwendet habe:
{
"method": "$context.httpMethod",
"body" : $input.json('$'),
"headers": {
#foreach($param in $input.params().header.keySet())
"$param": "$util.escapeJavaScript($input.params().header.get($param))" #if($foreach.hasNext),#end
#end
},
"queryParams": {
#foreach($param in $input.params().querystring.keySet())
"$param": "$util.escapeJavaScript($input.params().querystring.get($param))" #if($foreach.hasNext),#end
#end
},
"pathParams": {
#foreach($param in $input.params().path.keySet())
"$param": "$util.escapeJavaScript($input.params().path.get($param))" #if($foreach.hasNext),#end
#end
},
"stage-variables" : {
#foreach($key in $stageVariables.keySet())
"$key" : "$util.escapeJavaScript($stageVariables.get($key))"
#if($foreach.hasNext),#end
#end
},
"context" : {
"account-id" : "$context.identity.accountId",
"api-id" : "$context.apiId",
"api-key" : "$context.identity.apiKey",
"authorizer-principal-id" : "$context.authorizer.principalId",
"caller" : "$context.identity.caller",
"cognito-authentication-provider" : "$context.identity.cognitoAuthenticationProvider",
"cognito-authentication-type" : "$context.identity.cognitoAuthenticationType",
"cognito-identity-id" : "$context.identity.cognitoIdentityId",
"cognito-identity-pool-id" : "$context.identity.cognitoIdentityPoolId",
"http-method" : "$context.httpMethod",
"stage" : "$context.stage",
"source-ip" : "$context.identity.sourceIp",
"user" : "$context.identity.user",
"user-agent" : "$context.identity.userAgent",
"user-arn" : "$context.identity.userArn",
"request-id" : "$context.requestId",
"resource-id" : "$context.resourceId",
"resource-path" : "$context.resourcePath"
}
}
Es durchläuft alle Header und Parameter alles abzubilden. Es gibt auch ein neues Feature, das announced yesterday ist, das Ihnen ermöglicht, den unformatierten Anforderungshauptteil zu übergeben.
Ich denke, Sie könnten einen ähnlichen Ansatz zum Erstellen eines universellen Response-Mapping verwenden. Vielleicht möchten Sie sich die Zuordnungsfunktion parseJson()
ansehen, die auch announced yesterday war. Ich glaube, dass die neue parseJson()
Funktion Ihnen erlauben würde, eine Zeichenkette zurückzugeben, die JSON-Daten von Ihrem Backend enthält und diese leicht zu einer JSON-Antwort im API-Zugang zugeordnet werden kann.
Perfekt, danke! – alph486
@ jack-kohn-aws Ich muss einen Filterabfrageparameter durchlaufen. z.B. https://api.xxx/pets?filters[search]=cute Wie würde ich das erreichen? – rabishah
+1. Dies wäre eine große Hilfe für Leute, die versuchen, Legacy-APIs voller Ad-hoc-Endpunkte mit wenig Dokumentation von Abfrageparametern zu migrieren. – Eric