首页 文章

当我从邮递员发送邮件时,我如何接收参数

提问于
浏览
1

我通过邮递员将参数发送到 api 网关并接收结果。所以我在 lambda 中尝试简单的例子,

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

    callback(null, Idx);

};

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

在此输入图像描述

我在 Body 中选择 raw 并且这样做我可以收到结果

但是,我在 Headers 部分放了“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]"}

在此输入图像描述

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

我怎么能这样做?

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

1 回答

  • 0

    API Gateway 期待 JSON,但是你给它 urlencoded 表单数据(i.e.一个字符串)。您需要在 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

相关问题