我正在为我的安卓应用程序开发一个 REST API。目前,我还没有将其整合到我的应用程序中,而是尝试使用chrome上流行的"高级休息客户端应用程序"对其进行测试。处理 GET 方法的函数工作正常,并以 json 格式显示来自我的数据库的记录,但当我尝试测试处理 POST 的函数时,它不起作用。请我想要有人帮助我如何从"高级 Rest 客户端应用程序"测试我的帖子功能。
原料药代码:
<?php
require_once '../include/DbConnect.php';
require '.././libs/Slim/Slim.php';
'Slim'Slim::registerAutoloader();
// create new Slim instance
$app = new 'Slim'Slim();
$app->get('/users', 'getUser');
$app->post('/register', 'addUser');
$app->run();
function getUser(){
$sql = "SELECT * FROM users";
try{
$db = new DbConnect();
$conn = $db->connect();
$stmt = $conn->query($sql);
$users = $stmt->fetchAll(PDO::FETCH_OBJ);
$db = null;
echo '{"user": ', json_encode($users).'}';
} catch(PDOException $e){
echo '{"error":{"text":'. $e->getMessage().'}}';
}
}
function addUser() {
$request = 'Slim'Slim::getInstance()->request();
$body = $request->getBody();
$user = json_decode($body);
$sql = "INSERT INTO users (fname, email) VALUES(:fname, :email)";
try{
$db = new DbConnect();
$conn = $db->connect();
$stmt = $conn->prepare($sql);
$stmt->bindParam("fname", $user->fname);
$stmt->bindParam("email", $user->email);
$stmt->execute();
$user->id = $conn->lastInsertId();
$db = null;
echo json_encode($user);
} catch(PDOException $e){
echo '{"error":{"text":'. $e->getMessage().'}}';
}
}
?>
好的,这是我的问题,当我在下面的代码中回显$body的内容时,这些值显示为"fname=mishael&email=mishaelharry%40gmail.com"但是在我用$user = json_decode($body)解码后; 没有值插入到我的数据库中,我从这行代码中得到{"fname":null,"电子邮件":null,"id":"33"} 回显json_encode($user);[代码]
function addUser() {
$request = 'Slim'Slim::getInstance()->request();
$body = $request->getBody();
echo json_encode($body);
$user = json_decode($body);
$sql = "INSERT INTO users (fname, email) VALUES(:fname, :email)";
try{
$db = new DbConnect();
$conn = $db->connect();
$stmt = $conn->prepare($sql);
$stmt->bindParam("fname", $user->fname);
$stmt->bindParam("email", $user->email);
$stmt->execute();
$user->id = $conn->lastInsertId();
$db = null;
echo json_encode($user);
} catch(PDOException $e){
echo '{"error":{"text":'. $e->getMessage().'}}';
}
}