Javascript 在Python Lambda中从POST请求中提取参数
背景: 我正试图从JavaScript向用python编写的AWS lambda函数发出POST请求。然后,我会将POST请求中的信息输入数据库 问题: 我似乎不知道如何从POST请求中获取信息。并将其存储到变量中 我曾尝试使用事件['Username',它在AWS提供的测试模拟中起作用,但实际上不起作用Javascript 在Python Lambda中从POST请求中提取参数,javascript,python,post,aws-lambda,request,Javascript,Python,Post,Aws Lambda,Request,背景: 我正试图从JavaScript向用python编写的AWS lambda函数发出POST请求。然后,我会将POST请求中的信息输入数据库 问题: 我似乎不知道如何从POST请求中获取信息。并将其存储到变量中 我曾尝试使用事件['Username',它在AWS提供的测试模拟中起作用,但实际上不起作用 <form method="POST" action="https://fake.execute-api.us-east-1.amazonaws.com/P
<form method="POST" action="https://fake.execute-api.us-east-1.amazonaws.com/Prod/RegisterUser">
<label for="Username">Username:</label><br>
<input type="text" id="Username" name="Username" value=""><br>
<label for="password">Password:</label><br>
<input type="text" id="Password" name="Password" value=""><br><br>
<input type="submit" id="submit" value="Submit" >
</form>
您的HTTP正文将通过lambda作为
事件['body']
另外,我认为您需要使用JSON.loads
解析主体的JSON字符串
最后,我看到您的HTML正在执行一个GET
方法,您可能需要修复该问题:
<form method="POST" action="https://fake.execute-api.us-east-1.amazonaws.com/Prod/RegisterUser">
无服务器是lambda函数的一个很好的资源。下面是一个可能适用于您的案例的示例:
已解决:
我发现直接发布到AWS Lambda是不起作用的,因为字符串格式。AWS Lambda需要使用JSON.stringify()的JSON格式
当我使用post时,我总是会遇到这个错误。“SyntaxError:JSON.parse:JSON数据第1行第74列的转义字符不正确”
import pymysql
import json
#endpoint = 'fake.us-east-1.rds.amazonaws.com'
#username = 'admin'
#password = 'admin'
#database_name = 'fake'
#connection
#connection = pymysql.connect(endpoint, user=username, passwd=password, db=database_name)
def lambda_handler(event, context):
user = event['Username']
password = event['Password']
return {
"Username": user,
"Password":password
}
<form method="POST" action="https://fake.execute-api.us-east-1.amazonaws.com/Prod/RegisterUser">
<form onsubmit="submitData();return false;">
<label for="Username">Username:</label><br>
<input type="text" id="Username" name="Username" value=""><br>
<label for="password">Password:</label><br>
<input type="text" id="Password" name="Password" value=""><br><br>
<input type="submit" id="submit" value="Submit" >
</form>
function submitData() {
var user = document.getElementById("Username").value
var pass = document.getElementById("Password").value
var json = { Username: user, Password: pass };
$.ajax({
type: "POST",
url: "https://fake.execute-api.us-east-1.amazonaws.com/Prod/RegisterUser",
data: JSON.stringify(json),
beforeSend: function() {
console.log("Before");
$("#submit").attr('disabled', true);
},
success: function(response){
console.log(response);
$("#submit").attr('disabled', false);
}
});
}
import pymysql
import json
def lambda_handler(event, context):
resp = event
return {
"Username:": resp["Username"],
"Password": resp["Password"]
}