当我从邮递员发送消息时如何接收参数

时间:2018-06-22 04:54:12

标签: amazon-web-services aws-lambda postman

我由邮递员将参数发送到api网关并接收结果。 因此,我尝试使用lambda中的简单示例,

exports.handler = (event, context, callback) => {
    // TODO implement
    const Idx = event.Idx * 2;

    callback(null, Idx);

};

当我发送IDx时,它回调它的两倍。

enter image description here

我在Body中选择raw,然后可以接收结果

但是,我在标头部分中输入了“ Content-Type”:“ application / x-www-form-urlencoded”,选择了x-www-form-urlencoded,它会返回此值。

{"message": "Could not parse request body into json: Unrecognized token \'Idx\': was expecting \'null\', \'true\', \'false\' or NaN\n at [Source: [B@331a45ec; line: 1, column: 5]"}

enter image description here

我想通过x-www-formurlencoded从邮递员那里接收数据。

我该怎么做?

如果知道的话,请帮助我。

1 个答案:

答案 0 :(得分:0)

API网关期望使用JSON,但是您要为其提供经过urlencoded的表单数据(即字符串)。您需要在API网关配置中添加映​​射模板:

{
    "data": {
        #foreach( $token in $input.path('$').split('&') )
            #set( $keyVal = $token.split('=') )
            #set( $keyValSize = $keyVal.size() )
            #if( $keyValSize >= 1 )
                #set( $key = $util.urlDecode($keyVal[0]) )
                #if( $keyValSize >= 2 )
                    #set( $val = $util.urlDecode($keyVal[1]) )
                #else
                    #set( $val = '' )
                #end
                "$key": "$val"#if($foreach.hasNext),#end
            #end
        #end
    }
}

来源:https://stackoverflow.com/a/37956390/5794667