问题描述: 在AWS API Gateway集成响应中,使用Lambda函数返回的响应中包含换行符时,无法使用正则表达式进行匹配。
解决方法:
修改Lambda函数的返回值: 将Lambda函数返回的响应中的换行符替换为其他字符,例如空格或特殊字符。这样可以避免正则表达式无法匹配的问题。
示例代码:
import re
def lambda_handler(event, context):
# 假设返回的响应中包含换行符
response = "Hello\nWorld"
# 将换行符替换为其他字符
response = response.replace("\n", " ")
# 返回修改后的响应
return {
"statusCode": 200,
"body": response
}
修改API Gateway集成响应的正则表达式: 如果无法修改Lambda函数的返回值,可以尝试修改API Gateway集成响应中正则表达式的匹配规则。
示例代码:
{
"statusCode": "200",
"responseParameters": {
"method.response.header.Content-Type": "'text/plain'"
},
"responseTemplates": {
"application/json": ""
},
"selectionPattern": ".*" // 修改此处的正则表达式
}
将正则表达式修改为能够匹配包含换行符的响应的规则。
使用非正则表达式的匹配方式: 如果无法修改Lambda函数的返回值,并且正则表达式无法满足匹配的需求,可以尝试使用其他非正则表达式的匹配方式,例如字符串的包含关系。
示例代码:
{
"statusCode": "200",
"responseParameters": {
"method.response.header.Content-Type": "'text/plain'"
},
"responseTemplates": {
"application/json": ""
},
"selectionPattern": "$input.path('$.response').contains('\n')" // 修改此处的匹配方式
}
将正则表达式的匹配方式修改为使用字符串的包含关系进行匹配。
请根据具体情况选择适合的解决方法。