2016-06-24 18 views
0

體映射定義爲:AWS API網關去除人體的換行符

{ 
    "csv": "$input.body", 
    "p1": false, 
    "p2": "p3", 
    "p3": "p4" 
} 

調用函數

curl 'https://xxxxx.execute-api.us-west-2.amazonaws.com/prod/xxx?p3=aaa&p4=bbb' \ 
-XPOST -H "Content-Type: application/csv" -d @input.csv 

凡input.csv包含

l1c1,l1c2 
l2c1,l2c2 
l3c1,l3c2 

將結束與調用我的lambda函數

{ 
    "csv": "l1c1,l1c2l2c1,l2c2l3c1,l3c2", 
    "p1": false, 
    "p2": "p3", 
    "p3": "p4" 
} 

有沒有辦法從體內刪除換行符? $ input.body應該根據這裏的文檔評估爲「RAW PAYLOAD」http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html#d0e9653

也嘗試使用$ util.escapeJavaScript($ input.body),但它根本沒有任何區別。

解碼$ util.base64Encode($ input.body)也有剝離的換行符...

感謝,

回答

0

從捲曲的man page

發佈數據從一個文件名爲「 foob​​ar'將因此用--data @foobar來完成。當--data被告知從這樣的文件讀取時,回車符和換行符將被刪除。

參見:How to send line break with curl?

0

原來--data或-d發送數據作爲WWW的形式進行了urlencoded,從而剔除新行。 --data-binary是發送文件的正確方式。