2017-06-22 33 views
1

我正在通過AWS API網關公開我的DDB。我有它的工作,但是當我通過我的「PUT」時,它要求我將我的DDB中的每個字段都包含在正文請求中。有些客戶可能只想發佈我的DDB中10個字段中的5個字段。這將作爲POST還是PATCH來完成?如果是這樣,我的映射模板是什麼樣的?暴露DynamoDB的API網關(需要複雜的映射模板或Lamdba函數?)

第二:我想添加一個自動生成的order_number到DDB中的每個條目。所以現在每個PUT或POST都會有一個唯一的order_number。所以我的主鍵是一個變量,次鍵是一個客戶sku號碼,反之亦然。

感謝您的幫助。

回答

0

Body Template:我仍然需要它爲每個新條目自動生成「order_number」 。

#set($inputSep = $input.path('$')) 
#set($thisLoop = 
'{"CustomerNm":"1","ShipDate":"2","Shipping":"3","commentId":"4"}') 
#set($myPlaces = $util.parseJson($thisLoop)) 
#set($allKeys = '') 
#set($myVals = '"') 
{ 
"TableName": "BRPI", 
"Key": { 
    "CustomerID": { 
     "S": "$input.path('$.CustomerID')" 
    } 
}, 
#foreach($type in $inputSep.keySet()) 
#if($type == "CustomerID") 
#else 
    #set($thisPlace = $myPlaces.get($type)) 
    #set($params = $inputSep.get($type)) 
    #set($thisKey = "$type" + " = :val" + "$thisPlace") 
    #set($thisPath = "$params") 
    #if($foreach.hasNext) 
     #set($myComma = ",") 
     #set($myReturn = '"') 
    #else 
     #set($myComma = "") 
     #set($myReturn = "") 
    #end 
    #set($allKeys = "$allKeys" + "$thisKey" + "$myComma") 
    #set($myVals = "$myVals" + ":val" + "$thisPlace" + '": {"S": "' + 
"$thisPath" + '"}' + "$myComma" + "$myReturn") 
#end 
#end 
"UpdateExpression": "SET $allKeys", 
"ExpressionAttributeValues": { 
    $myVals 
}, 
"ReturnValues":"UPDATED_NEW" 
}