我在codeigniter中设置了Rest API,它们将被Android应用程序以及来自相同codeigniter设置的Web应用程序使用。下面是我的文件夹结构。
Controllers
api
-signupApi
Signup
signupApi 是Android和网络应用消耗的实际其余API。 注册是我的实际注册屏幕控制器,我在其中有一个表单,用于向signupApi发布用户注册数据。
if($_POST){
// call the signupApi here and post the user registration data
}
如果存在注册POST请求,如何调用REST API控制器中的注册API函数并在注册控制器中处理请求。我研究了如何从另一个控制器函数调用函数,但无法为我找到正确的解决方案。有人可以建议我如何继续吗?
答案 0 :(得分:1)
如何调用REST API中的注册API函数 控制器并在注册控制器中处理请求
听起来你想从另一个控制器调用一个控制器中的方法。大多数MVC框架(包括CodeIgniter)都希望控制器只处理请求本身。
如果你有逻辑需要两个控制器来实现,你需要(并且需要)将该逻辑放入模型中。 CodeIgniter最初给人的印象是模型仅用于数据库ORM交互,但它们也是您将要处理的大多数共享逻辑的合适选项。
如果两个方法在同一结构中采用完全相同的请求,则合并方法并根据这些请求的内容处理API与Web App输出,或传递一个附加参数以反映应输出的数据。
答案 1 :(得分:0)
cURL是与REST API交互的最灵活的方法,因为它正是针对此类事情而设计的。您可以设置HTTP标头,HTTP参数等等。 cURL发出POST请求
这里是一个例子:
function function_name()
{
$username = 'admin';
$password = '1234';
// Set up and execute the curl process
$curl_handle = curl_init();
curl_setopt($curl_handle, CURLOPT_URL, 'http://localhost/site/index.php/example_api');
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_POST, 1);
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, array(
'name' => 'name',
'email' => 'example@example.com'
));
// Optional, delete this line if your API is open
curl_setopt($curl_handle, CURLOPT_USERPWD, $username . ':' . $password);
$buffer = curl_exec($curl_handle);
curl_close($curl_handle);
$result = json_decode($buffer);
if(isset($result->status) && $result->status == 'success')
{
echo 'Record inserted successfully...';
}
else
{
echo 'Something has gone wrong';
}
}