2014-11-22 131 views
-1

我正在爲我的android應用程序開發一個REST API。目前我還沒有將其整合到我的應用程序中,而是嘗試使用Chrome上流行的「高級休息客戶端應用程序」進行測試。處理GET方法的函數可以正常工作,並以json格式顯示來自db的記錄,但是當我嘗試測試處理POST的函數時,它不起作用。請我希望有人幫助我瞭解如何從「高級休息客戶端應用程序」測試我的發佈功能。無法測試Rest api

API代碼:

<?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().'}}'; 
} 
} 
?> 
+0

所以你想知道如何使用Chrome REST客戶端的post方法嗎? – 2014-11-22 16:21:03

+0

@Indra嘗試過它,但它不會將這些值解析到我的發佈函數中。這個輸出我得到{「fname」:null,「email」:null,「id」:「25」} – mish 2014-11-22 16:28:24

+0

你在這裏發佈的代碼不會處理你的輸入......你真正的問題是什麼?你想知道關於REST客戶端或php代碼導致的錯誤? – 2014-11-22 16:32:28

回答

0

好了,這裏是我的問題,當我回響在這些值以下代碼中的$正文的內容都顯示「FNAME =米沙利&電子郵件= mishaelharry%40gmail.com 「但我用$ user = json_decode($ body)解碼之後;沒有值插入到我的數據庫中,並且我從這行代碼中得到{「fname」:null,「email」:null,「id」:「33」} echo json_encode($ user); [code]

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().'}}'; 
} 
}