在codeigniter控制器函数中调用Rest API

时间:2018-04-10 17:22:33

标签: php rest api codeigniter codeigniter-3

我在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函数并在注册控制器中处理请求。我研究了如何从另一个控制器函数调用函数,但无法为我找到正确的解决方案。有人可以建议我如何继续吗?

2 个答案:

答案 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';
    }
}