要在AppSync HTTP解析器映射模板中正确处理PATCH方法,可以按照以下步骤操作:
#set($httpMethod = $input.json("$.httpMethod")) #if($httpMethod == "PATCH") #set($body = $input.json("$.body")) ## 对body进行处理,例如转为Map类型 #set($bodyMap = $util.parseJson($body)) #set($bodyJson = $util.toJson($bodyMap)) { "method": "PATCH", "body": $bodyJson } #else ## 其他方法的处理,例如GET方法 { "method": "GET" } #end
以Schema定义为例,可以在Schema文件中为数据源的字段设置解析器,例如:
type Mutation { updateItem(id: ID!, input: UpdateItemInput!): Item @aws_iam @aws_lambda( function_name: "updateItemFunction" payload: "$util.toJson({"id": $args.id, "input": $args.input})" ) @aws_api_key @aws_auth(cognito_groups: ["admin"]) @aws_appsync_resolver( dataSourceName: "dynamoDBDataSource" typeName: "Mutation" fieldName: "updateItem" ) { ## 在这里设置HTTP解析器映射模板 httpConfig: { endpoint: "https://example.com/api/items/{id}" method: "PATCH" headers: { "Content-Type": "application/json", "Authorization": "$context.identity.apiKey" } ## 这里指定解析器名称为"PatchItemResolver" ## 也可以使用其他名称, ## 只需在后续步骤中使用相应的名称即可 mappingTemplate: """ ## 使用PatchItemResolver