1,创建Api目录;application/Api
2,创建API类;application/Api/XXX.php;//例如:News.php
<?php /** * Created by PhpStorm. * User: zty * Date: 2018/4/23 * Time: 17:37 */ namespace Api; use \App\Controllers\NewsController; use \App\Models\NewsModel; class News { public function index(){ $news = new NewsModel(); $datas = $news->findAll(); return json_encode($datas,true); } public function get($id){ $news = new NewsModel(); $data = $news->find($id); var_dump($id); return json_encode($data); } }
3,创建路由
例子:
$routes->add('/api/', 'Api\News::index');//APi默认读取数据接口路由 $routes->get('/api/news/(:num)','Api\News::get/$1');//通过id获取信息接口路由
4,application/config/auto_load.php内
$psr4 = [ 'Config' => APPPATH.'Config', APP_NAMESPACE => APPPATH, // For custom namespace 'App' => APPPATH, // To ensure filters, etc still found, 'Api' => APPPATH.'Api', //添加API的自动加载名称和目录 'Tests\Support' => TESTPATH.'_support', // So custom migrations can run during testing ];
5,可以请求的地址:
http://XXXXurl/api/news;
http://xxxurl/api/news/1;
如果API作为单独项目去写就简单了,所有接口写成控制器。就OK了。CI4默认的路由规则:
http://url/controller/function/参数1/参数2....
=====================================================================
另外,CI4也提供了简便安全API内置处理方式:
<?php namespace App\Controllers;
class Users extends \CodeIgniter\Controller
{
use CodeIgniter\API\ResponseTrait;
public function createUser()
{
$model = new UserModel();
$user = $model->save($this->request->getPost());
// 响应 201 状态码
return $this->respondCreated();
}
}
//常用的方法,在使用时,请关闭调试模式,避免返回信息里含有很多调试信息。默认返回格式为:json,如果结果是字符串,返回的是html格式。
// 通用响应方式
respond($data, 200);
// 通用错误响应
fail($errors, 400);
// 项目创建响应
respondCreated($data);
// 项目成功删除
respondDeleted($data);
// 客户端未授权
failUnauthorized($description);
// 禁止动作
failForbidden($description);
// 找不到资源
failNotFound($description);
// Data 数据没有验证
failValidationError($description);
// 资源已存在
failResourceExists($description);
// 资源早已被删除
failResourceGone($description);
// 客户端请求数过多
failTooManyRequests($description);
详细的手册用法请见:
https://codeigniter-chinese.github.io/codeigniter4-user-guide/libraries/api_responses.html?highlight=api