2016-09-11 17 views
0

この素晴らしいリソースは、https://forums.aws.amazon.com/thread.jspa?messageID=673012に続きましたが、データに空のフィールドがあると内部サーバーエラーが発生します。コントロール)。AWS Gateway + x-www-form-urlencodedの空白フィールドでの改行

が次に検索行き、キリスト教のE Willmanからこのより最近更新ライブラリを実装 - より簡潔であるにもかかわらずhttps://github.com/christianewillman/aws-api-gateway-bodyparser

私は空のフィールドを送信するとき、それはまだ(ポストマンを経て)失敗しています。それを稼働させるためのヒントは非常に高く評価されます!

ここで参照のためのマッピングテンプレートです:

## Parses x-www-urlencoded data to JSON for AWS' API Gateway 
## 
## Author: Christian E Willman <[email protected]> 

#if ($context.httpMethod == "POST") 
    #set($requestBody = $input.path('$')) 
#else 
    #set($requestBody = "") 
#end 

#set($keyValuePairs = $requestBody.split("&")) 
#set($params = []) 

## Filter empty key-value pairs 
#foreach($kvp in $keyValuePairs) 
    #set($operands = $kvp.split("=")) 

    #if($operands.size() == 1 || $operands.size() == 2) 
    #set($success = $params.add($operands)) 
    #end 
#end 

{ 
    ## add in the API stage data 
    "stage": "$context.stage", 
    #foreach($param in $params) 
    #set($key = $util.urlDecode($param[0])) 

    #if($param.size() > 1) 
     #set($value = $util.urlDecode($param[1])) 
    #else 
     #set($value = "") 
    #end 

    "$key": "$value"#if($foreach.hasNext),#end 
    #end 
} 

編集:

WSO_SIGNATURE=1d9ce78c2778ecf795a93009a09f8102dd4ef38a&WP_BUYER_NAME=Neil+calabroso&WP_ITEM_NAME=Welcome+to+the+Vault&SHIPTONAME=Neil+calabroso&WSO_PRODUCT_ID=wp_product_3&WP_AFFID=&WSO_SALE_CURRENCY=USD&EMAIL=nn%2Bpaypal%40freelancer.com&WP_ITEM_NUMBER=wp_product_3&PAYMENTSTATUS=COMPLETED&WP_BUYER_EMAIL=nn%2Bpaypal%40freelancer.com&WSO_PRODUCT_NAME=Welcome+to+the+Vault&WP_SALEID=wp_sale_3&AMT=43&WSO_CUSTOMER_EMAIL=nn%2Bpaypal%40freelancer.com&WSO_SALE_ACTION=SALE&WP_SALE_AMOUNT=43&WSO_TXN_ID=35&saleid=wp_sale_3&WSO_AFF_AMOUNT=0.00&WP_ACTION=sale&WSO_IPN_VERSION=1&WP_TXNID=35&WSO_SALE_ID=wp_sale_3&payer_email=nn%2Bpaypal%40freelancer.com&WP_SALE_CURRENCY=USD&WSO_SALE_AMOUNT=43&WSO_AFF_EMAIL=&TRANSACTIONID=35&WSO_CUSTOMER_NAME=Neil+calabroso 

予想される出力はJSONのキーと値のペアのシリーズです:これは私がに送信していたデータであります

{ 
    "WSO_SIGNATURE": "1d9ce78c2778ecf795a93009a09f8102dd4ef38a", 
    "WP_BUYER_NAME": "Neil calabroso", 
    "WP_ITEM_NAME": "Welcome to the Vault", 
    "SHIPTONAME": "Neil calabroso", 
    "WSO_PRODUCT_ID": "wp_product_3", 
    "WP_AFFID": "", 
    "WSO_SALE_CURRENCY": "USD", 
    "EMAIL": "[email protected]", 
    "WP_ITEM_NUMBER": "wp_product_3", 
    "PAYMENTSTATUS": "COMPLETED", 
    "WP_BUYER_EMAIL": "[email protected]", 
    "WSO_PRODUCT_NAME": "Welcome to the Vault", 
    "WP_SALEID": "wp_sale_3", 
    "AMT": "43", 
    "WSO_CUSTOMER_EMAIL": "[email protected]", 
    "WSO_SALE_ACTION": "SALE", 
    "WP_SALE_AMOUNT": "43", 
    "WSO_TXN_ID": "35", 
    "saleid": "wp_sale_3", 
    "WSO_AFF_AMOUNT": "0.00", 
    "WP_ACTION": "sale", 
    "WSO_IPN_VERSION": "1", 
    "WP_TXNID": "35", 
    "WSO_SALE_ID": "wp_sale_3", 
    "payer_email": "[email protected]", 
    "WP_SALE_CURRENCY": "USD", 
    "WSO_SALE_AMOUNT": "43", 
    "WSO_AFF_EMAIL": "", 
    "TRANSACTIONID": "35", 
    "WSO_CUSTOMER_NAME": "Neil calabroso" 
} 
+0

入力と予想される出力を含めてもよろしいですか? –

+0

こんにちは@私は入力と予想される出力を追加しました。コメントしてくれてありがとう。 –

答えて

1

@ marcus-whybrowのこのマッピングテンプレートが見つかりました。 - How to pass a params from POST to AWS Lambda from Amazon API Gateway

{ 
    #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 
} 
関連する問題