codeigniter构建restful api有两种核心方式:手动配置路由(精确控制)和启用improved auto routing(约定优先)。手动路由通过http动词方法绑定资源路径与控制器动作,如$routes->get('api/users', 'api\users::index');自动路由需开启$autoroutesimproved = true并遵循命名约定(如posts::index响应get /api/posts)。统一使用$this->response()返回json,支持状态码与content-type自动设置,并可选集成认证与cors增强安全性。

CodeIgniter 做 RESTful API,核心是让 URL 路径对应资源、HTTP 方法对应操作。它不强制你用某种方式,但有两条清晰路径:手动配置路由 + 控制器方法映射,或启用 Improved Auto Routing 让框架按约定自动分发请求。
手动定义 RESTful 路由(适合精细控制)
在 app/Config/Routes.php 中,用 HTTP 动词后缀明确绑定请求类型与控制器方法:
-
GET /api/users → 列表:
$routes->get('api/users', 'ApiUsers::index'); -
GET /api/users/123 → 单条:
$routes->get('api/users/(:num)', 'ApiUsers::show/$1'); -
POST /api/users → 新增:
$routes->post('api/users', 'ApiUsers::store'); -
PUT /api/users/123 → 更新:
$routes->put('api/users/(:num)', 'ApiUsers::update/$1'); -
DELETE /api/users/123 → 删除:
$routes->delete('api/users/(:num)', 'ApiUsers::destroy/$1');
注意:(:num) 是内置占位符,匹配纯数字;$1 表示把捕获的值传给方法参数。这类写法直观、可控,适合关键接口或需要自定义逻辑的场景。
启用 Improved Auto Routing(适合批量资源端点)
避免重复写几十条相似路由,推荐开启 CodeIgniter 4 的 Improved Auto Router:
- 确认 app/Config/Feature.php 中
public bool $autoRoutesImproved = true; - 打开 app/Config/Routing.php 中
public bool $autoRoute = true;
之后,只要控制器类名和方法名遵循约定,就能自动响应:
开箱即用的技能链路由引擎。13 条预定义链覆盖搜索、开发、审查、MLOps、法律、创意等场景,三层路由架构(触发词→SAD反馈→DAG编排),recall@10=96.97%。配置驱动(chains.yaml),零代码扩展。pip install skill-weave-chains 一键安装。
-
GET /api/posts → 自动调用
AppControllersApiPosts::index() -
GET /api/posts/42 → 自动调用
AppControllersApiPosts::show($id) -
POST /api/posts → 自动调用
AppControllersApiPosts::create() -
PUT /api/posts/42 → 自动调用
AppControllersApiPosts::update($id) -
DELETE /api/posts/42 → 自动调用
AppControllersApiPosts::delete($id)
方法名必须是 index、show、create、update、delete 等标准命名,且控制器需放在 AppControllersApi 命名空间下。这种方式省力、一致,也更贴近 RESTful 语义。
统一返回 JSON 响应(控制器内处理)
RESTful API 默认应返回结构化数据。在控制器方法中,不要用 echo json_encode(...),而是使用框架响应机制:
- 返回成功列表:
return $this->response(['users' => $users], 200); - 返回单条记录:
return $this->response(['user' => $user], 200); - 返回错误:
return $this->failNotFound('User not found');或return $this->failValidationErrors($validator->getErrors());
这些方法会自动设置 Content-Type: application/json,并处理状态码。若用的是第三方库如 codeigniter-restserver,它还支持自动解析 Accept: application/xml 请求并返回 XML。
可选增强:添加认证与 CORS 支持
生产环境的 API 通常需要权限控制和跨域支持:
- 在控制器构造函数中检查 Token:
if (!$this->request->hasHeader('Authorization')) { return $this->failUnauthorized(); } - 在中间件或基控制器中添加 CORS 头:
$this->response->setHeader('Access-Control-Allow-Origin', '*'); - 对敏感操作(如删除)加 CSRF 验证,或使用 API Key 白名单机制
这些不是路由本身的功能,但和路由共同构成完整 API 层——路由决定“谁来处理”,安全机制决定“能不能处理”。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!










