ci4用resourcecontroller一行注册全路由,方法名须严格为index/show/create/update/delete;ci3需第三方rest库并手动配动词路由,否则put/delete请求体为空且路由不生效。

ResourceController,CI3 必须加第三方库(如 chriskacerguis/codeigniter-restserver),混用会报错、路由不生效、$this->put() 返回空数组——这是最常卡住的起点。
CI4 怎么快速跑通 /api/users 资源
不用写一堆 $routes->get(),一行注册全路由:
$routes->resource('users', ['controller' => 'Users']);
控制器必须继承 ResourceController,且方法名严格为 index()、show($id)、create()、update($id)、delete($id)。漏一个就 404。
-
$this->format = 'json'必须显式设置,否则默认输出 HTML,前端收不到 JSON - 请求体是 JSON 时,用
$this->request->getJSON();表单提交用$this->request->getPost()——别指望getPost()能读 JSON 字段 - 验证失败要返回 400:
return $this->failValidationError($errors),不是echo json_encode([...])+exit
CI3 怎么让 PUT/DELETE 请求体不为空
原生 CI3 不解析 php://input,$_PUT 和 $_DELETE 永远是空的。必须用 REST_Controller 库才能从原始输入中提取数据。
- 安装后,在控制器顶部
use chriskacerguis\RestServer\RestController;,并继承它 - 路由必须按动词声明:
$route['api/users/(:num)']['put'] = 'users/update/$1';,只写$route['api/users/(:num)'] = '...'不生效 -
$this->put()返回的是关联数组(JSON)或普通键值对(表单),结构不统一,得先is_array($data)判断再处理 - 配置文件
application/config/rest.php中$config['rest_default_format'] = 'json'要设对,否则响应头可能是text/html
为什么 response() 后还是有额外 HTML 输出
常见于没终止执行流程。原生 CI 控制器里手动 echo json_encode(...) 后,必须 exit 或 die,否则框架后续还会输出视图或调试信息。
- 用
RestController时,调$this->response($data, 200)内部已含exit,不用再加 - 自己写响应逻辑时,
$this->output->set_content_type('application/json')必须在echo前调用,且不能被其他输出(比如var_dump、错误警告)干扰 - 开启
display_errors时,PHP 错误会混在 JSON 里,导致前端解析失败——上线前务必关掉
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











