Mapping multiple values for a requestParameter key

0

Hello there,

Is it possible to pass multiple values to a single request parameter key in integration requests? JSON like or encoded string?

A typical use case could be passing the sub property from the authorizer in the SNS message payload, together with other parameters

So far I have tried this:

integration.request.querystring.Message.foo: method.request.path.foo
integration.request.querystring.Message.bar: method.request.path.bar
integration.request.querystring.Message.userId: context.authorizer.claims.sub

But when I make the request via Postman I have this error:

    "Error": {
        "Code": "MalformedInput",
        "Message": "Start of list found where not expected",
        "Type": "Sender"
    },

Is this even possible? The docs do not mention it

teo
asked 4 years ago1625 views
4 Answers
0
Accepted Answer

It's not possible via the parameter mapping but doable within the request body mapping template with request override feature.
https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-override-request-response-parameters.html

Please note that the request/response override is only available in REST API.

AWS
answered 4 years ago
0

up please =)

teo
answered 4 years ago
0

Hello, first of all, thank you very much for the response.

And yes it worked by using mapping template, I thought they were only for body.

This is the working solution, under

requestTemplates:
                 application/json:
#set($foo = $input.params('foo'))
#set($userId = $context.authorizer.claims.sub)
$input.json("$")
#set($context.requestOverride.querystring.Message = "{
    ""foo"":  ""$foo"",    
    ""userId"" : ""$userId""
}")"
teo
answered 4 years ago
0

For a mix of numeric and associative arrays one can use this syntax as well:

#set($context.requestOverride.querystring['filter[0][action]'] = "where")
#set($context.requestOverride.querystring['filter[0][attribute]'] = "status")
answered 8 months ago

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions