我试图使用getParam向数据发布新用户注册,我使用RestClient来测试是否检索到值,或者每次都不为null:
这是我放入正文的json数据,我确实添加了一个基于application / json的内容类型标题:
{
"email" : "test@test.com",
"username" : "test",
"password" : "123",
}
这是发布用户的代码(注意var_dump($ email)和我用它来检查$ email是否包含值,将在修复后删除):
//add new user
$app->post('/user/add', function(Request $request, Response $response){
$email = $request->getParam('email');
$username = $request->getParam('username');
$password = $request->getParam('password');
$sql = "INSERT INTO users (email, username, password) VALUES (?, ?, ?)";
var_dump($email);
die ("end");
$conn = new Database();
$conn = $conn->createConnection();
$stmt = $conn->prepare($sql);
$stmt->bind_param('sss', $email, $username, $password);
$check = $stmt->execute();
$error = $stmt->error;
if ($check){
echo 'Added Successful';
}
if ($error != ''){
echo $error;
}
});
我通过/ calendar / add发布任命也做了同样的事情,它完美地工作,bot post方法是相同的,但为什么帖子用户没有得到价值?
答案 0 :(得分:0)
getParam()仅用于查询参数,例如:yoururl.com?param1 = value1
你必须使用
$body = $request->getParsedBody();
echo $body['email'];
代替
答案 1 :(得分:0)
DZDomi的答案不太准确,因为getParam()
类Request
内部调用getParsedBody()
方法。它应该与POST主体的查询字符串或数据一起使用。
如果在发送POST请求时收到NULL,请确保将客户端设置为使用application/x-www-form-urlencoded
或multipart/form-data
。
我不了解RestClient,但是如果您使用Postman,则可以在Postman UI上的Body选项卡上定义此信息。