通过另一个应用程序的http调用Yii RESTFul API

时间:2014-04-23 12:21:46

标签: php http rest yii

我已经在我创建的用户表上完成了一个带有CRUD的Yii应用程序。所以我已经有了视图,模型和控制器。现在我想创建一个具有JSON格式的RESTFul API,另一个应用程序可以调用它来创建用户。到目前为止,我在我的控制器中有以下代码,当我使用http请求在本地测试时,该代码可以正常工作。正如您在我的代码中看到的那样,$ post数组具有硬编码输入数据(仅用于测试目的),当我使用http请求在浏览器中调用REST API时,它可以正常工作:

http://localhost/PregnancyApp/index.php/User/insert?

/ User是控制器类,/ insert是控制器内部的动作功能,如下所示:

//Here is the code that i have in my controller class
public function actionInsert(){
$post = array('email'=>'Ethel@example.com',
'password'=>'ethelpass',
'nickname'=>'Ethel',
'is_paid'=>'0',
'due_date'=>'2014-01-01',
'ios_token'=>'0011110000',
'serial_num'=>'1100001111',
'picture'=>'null'
);


$command = Yii::app()->db->createCommand('INSERT INTO user (email, password, 
nickname,is_paid, due_date,ios_token, serial_num, picture )
VALUES (:email, :password, :nickname, :is_paid, :due_date, :ios_token, :serial_num, 
:picture)');

$command->bindParam(':email', $post['email']);
$command->bindParam(':password', md5($post['password']));
$command->bindParam(':nickname', $post['nickname']);
$command->bindParam(':is_paid', $post['is_paid']);
$command->bindParam(':due_date', $post['due_date']);
$command->bindParam(':ios_token', $post['ios_token']);
$command->bindParam(':serial_num', $post['serial_num']);
$command->bindParam(':picture', $post['picture']);
json_encode($command->execute());

echo "Please, check your database if the entry registered";
}

所以我的问题是,如何将这些值分配给http post请求以替换硬编码的$ post数组?我希望输入值(在数组中)来自客户端应用程序。那么如何格式化客户端应用程序可以发送的http post请求以请求我的API来创建用户?

1 个答案:

答案 0 :(得分:0)

你可以让请求者以GET或POST格式发送变量,然后就可以得到它:

如果是帖子:

$post = array(
    'email' => $_POST['email'],
    'password' => $_POST['password'],
    'nickname'=> $_POST['nickname'],
    'is_paid'=>'0',
    'due_date'=>date('Y-m-d'),
    'ios_token'=> $_POST['ios_token'],
    'serial_num'=> $_POST['serial_num'],
    'picture'=>null
);

或GET

$post = array(
    'email' => $_GET['email'],

然后回显结果

echo CJSON::encode(array('result'=>'success'));

但是在使用之前不要忘记清理变量