CodeIgniter
以 3.1.7 版本为例, 下载地址: codeigniter.org.cn/
下载后, 解压至当前文件夹, 你会得到一个 CodeIgniter-3.1.7 的文件夹, 将它重命名为你喜欢的项目名, 我的是 JWT-RESTfull-IN-CI-Tutorial , 如图所示:
启动项目
接下来, 用 IDE 或者其他什么, 例如 PhpStormNetBeansSublime 等打开这个 CI 项目, 当然我这里用的 vscode, 不过都差不多了
打开 vscode 的终端, 或者 cmd 都可以, 只要可以跑命令行, 启动 PHP 的内置服务器就行, 确保你已经把 php 添加进了你的环境变量, 在项目的根目录, 就是 index.php 所在的目录下键入: php -S localhost:8000
OK, 在浏览器中访问一下 http://localhost:8000 , 你就会看到 CodeIgniter Welcome Page :
如果你不想使用 PHP 内置 web Server, 你扔然可以使用 apache 或者其他的 Web Server 进行启动项目
FIRBASE/PHP-JWT
首先, 需要找到一个 PHP 的 JWT 轮子 (package), 这样我们只需要将这个轮子融入到 CI 项目中就可以直接使用了
1. 访问 jwt.io ;
2. 点击 Libraries 导航, 下面列出的就是各个语言所写的相关轮子;
3. CTRL + F, 在当前页面中直接搜索 php, 找到 star 数最高的 firbase/php-jwt;
4. 前往 github.com/firebase/ph , 阅读下 README, 对它有个大致了解
PHP-JWT 除了可以直接通过 composer 安装, 也可以将它的源码直接下载下来
github.com/firebase/ph 这里有 4 个 php 文件, 将它们下载或复制, 放到 application/libraries/ 中:
由于我们不是通过 composer 安装的, 所以在 JWT.php 中, 我们需要手动去 require 一下另外 3 个文件:
除此之外, jwt 也需要给与一个密钥用于生成 token 值, 既然这是一个配置, 那么我们就在 CI 的配置文件目录 application/config/ 中创建配置文件: jwt.php
CODEIGNITER-RESTSERVER
github.com/chriskacerg 这是专为 CI 所造的 restserver package, 加入它之后, 可以很方便的接收或者处理 GETPOSTPUTDELETE 这类请求
这个源码其实就是一个加入 RestServer 后的 CI 项目, 它的实际源码总共有 4 个:
1. REST_Controller,RestServer 的主控制器, 你需要将自己编写的业务控制器继承它, 就和继承 CI_Controller 一样;
2. Format, 用于格式化响应数据, 可以格式化为 jsonarraycsvhtmlphpxml, 默认为 json;
3. rest, 它是 RestServer 的配置文件, 类似 CI 中的大部分配置文件;
4. rest_controller_lang, 它是 RestServer 的国际化配置项, 里面包含了 10 来种语言, 这里我们暂时只选择 english
和 PHP-JWT 一样, 将它们分别放入对应的目录中:
它没有一个非常详细的文档, 但是有一个简单的使用教程: code.tutsplus.com/tutorials/w
不过源码中的注释非常非常的详细, 总的来讲还是很容易就能理解的
基础表结构
为了真实的模拟 HTTP 请求, 以及实际的业务场景, 现在我们来建一个非常简单的 todos 表:
建表后, 别忘了在 application/config/database.php 中填入你当前的数据库相关配置
我们已经在 CI 中加入了 php-jwtcodeigniter-restserver, 并建好了数据库表配置了数据库链接
Cool, 所有准备工作已经就绪了, 接下来, 在下一篇教程我将模拟具体的业务场景:
1. 用户登录, 服务端校验账户和密码, 成功则返回当前这个用户的 json web token;
2. 用户可以对 todo 表进行 CRUD, 在 CRUD 操作时, 校验 json web token 是否合法;
来源: https://juejin.im/entry/5aa8e718f265da239a5f8180