codeigniter 可用于前后端分离的纯后端 api 开发,需关闭自动视图加载、统一 json 响应、适配路由协议、改用无状态认证。

CodeIgniter 本身不是为前后端分离设计的,但完全能胜任纯后端 API 场景——关键不是“改框架”,而是“绕开默认视图逻辑”,把控制器变成数据出口。
关闭自动视图加载,避免干扰响应
CI 默认会在控制器方法执行完后,尝试加载同名视图(如 index() 自动找 index.php),这对 API 是冗余甚至致命的(导致空白或 404)。必须主动切断这一流程:
- 在控制器构造函数中调用 $this->output->unset_template();(CI 3.1.11+ 支持)
- 彻底不写 $this->load->view();哪怕只调用一次,也可能触发模板层逻辑
- 检查父类或钩子是否隐式加载了视图,比如某些基础控制器里写了 parent::__construct() 后又手动调用了 view
统一 JSON 响应结构与编码处理
前端依赖稳定、可预测的返回格式。不要拼接字符串,也不要用 echo json_encode():
- 封装一个公共响应方法,例如 response($data, $code = 200, $msg = 'success')
- 内部始终调用 $this->output->set_content_type('application/json', 'utf-8')->set_output()
- 启用 JSON_UNESCAPED_UNICODE,防止中文被转成 \uXXXX:传入 json_encode($arr, JSON_UNESCAPED_UNICODE)
- 禁止使用 redirect()、show_404()、die() 等面向浏览器的终止函数
路由与协议适配 API 请求习惯
默认路由基于 PATH_INFO,而现代前端常发带完整路径的请求(如 /api/v1/users),需确保 CI 能正确解析:
- 在 config/config.php 中设 $config['uri_protocol'] = 'REQUEST_URI';
- 用正则路由匹配 API 前缀:$route['api/v1/(:any)'] = 'api/$1';,把所有 /api/v1/xxx 指向 Api 类
- API 控制器建议继承自独立基类(如 Api_Controller),在构造函数中统一做 unset_template、CORS 头、Token 验证等初始化
会话与 CSRF 必须脱离页面上下文
传统 Cookie + 表单隐藏域模式在前后端分离中失效,要转向无状态或 Header 认证:
- Session 存储切到 database 或 redis,禁用 cookie 驱动(避免跨域写 Cookie 失败)
- CSRF 保护改用 Token 机制:登录后下发 token,前端存在 localStorage,后续请求通过 Authorization 或自定义 Header(如 X-CSRF-Token)传递
- 在 API 基控制器中拦截并校验该 Header,失败直接返回 403,不跳转、不渲染任何页面
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











