Codeigniter RESTful web API 用于网络和移动应用程序

Codeigniter RESTful web API for web and mobile applications

我正在申请 运行 codeigniter,mysql 和 jquery。目前我们正计划用移动应用程序评估我们的网络应用程序。所以我们打算开发web应用,android,ios和blackberry。一切都是本机应用程序。

对于我们计划开发 codeigniter 的所有内容 restful API(这是所有客户端 Web 和手机的服务器)。 对于 Web 应用程序,我们计划使用 angular js 开发客户端。但是每个客户端只能访问 web api 服务器。我的 codeigniter 控制器现在看起来像 API.

我的问题是, 1.Is 为所有网络和移动客户端创建单一服务器的好主意 2.How 为 Web 和移动应用程序创建唯一身份验证

因为在网络应用程序中我们有 session 但在移动应用程序中没有 session。那么如何为两个应用程序创建唯一的身份验证。

我计划在登录成功后向客户端发送一个令牌。然后在对服务器的每个请求之后,客户端将发送一个带有请求的令牌 header。我不知道如何为移动应用程序做同样的事情,因为网络应用程序具有 session,因此我们可以将令牌保存到服务器中的 session 变量中。但是 in-case 的移动应用程序,如何创建服务器变量和维护令牌。

请任何人帮助我澄清我的疑问。

您可以查看 Codeigniter REST 控制器 (https://github.com/chriskacerguis/codeigniter-restserver/tree/master/application)。它有不同的方法 POST、GET 等

身份验证: 如果服务器收到登录请求,如果登录参数有效允许用户登录,同时用 session id 更新用户数据库列(这不是 php session id) - 创建一个 session 用户 id+时间+一些随机字符串 sha 1 或一些其他加密。有效的 session 与所有其他 request.If session 不匹配服务 return 无效的 session 消息。

如果服务器收到用户的登录请求,即使存在 session,重新生成 session 并更新数据库中的相应列,这将使之前的 session 无效.

此外,我们可以共享一个 API KEY(网络和应用程序开发人员已知)作为 http header 参数。如果 API 键匹配,则只有请求继续。提到的 codeigniter 控制器可以选择设置 API 键。

希望清楚..

<?php
class Api_ci extends CI_Controller
{
    public function __construct()
{
parent::__construct();
$this->load->model('Api_model');
$this->load->helper('text');
}

// code for login *api*-------------------------------

public function login_api_ci(){
$email =   $this->input->get('email');
$pass =    $this->input->get('password');
$query = $this->Api_model->login_api($email,$pass);
echo json_encode($query);
}
}
?>

<?php
class Api_model extends CI_Model{
    public function __construct()
{
parent::__construct();
// Your own constructor code
$this->load->database();
}

// code for login api

public function login_api($username,$password){
$query = $this->db->query("SELECT * FROM `host_users` WHERE `email` = '$username' AND `password` = '$password'");
return $query->result_array();
}
}
?>



After these process, your API URL your domain name and / class name, class function:
 www.example.com/Api_ci/login_api_ci?email=gaurav@gmail.com&password=1234567899


Output like this :




[{"id":"112","f_name":"gaurav","l_name":"singh","email":"gaurav@gmail.com","mob":"1234567899","password":"1234567899","img":null}]

只是为了更新这个帖子,我觉得使用 Codeigniter 创建一个 RESTFUL web API 有点过头了,除非你正在构建一个单体系统,否则有很多东西是不必要的。

我更喜欢只创建一个简单的 API 没有框架更好更轻,它也可以很容易地扩展,因为现在微服务比单体式开发有更多的好处。