调用Opencart API时是否可以使用JSON格式的请求体?
Opencart API 传参格式问题说明
- Opencart 原生API默认不支持直接接收raw JSON格式的请求参数,官方文档中的JSON格式仅为参数结构示例,并非要求请求体使用JSON格式提交。
- 底层逻辑原因:Opencart 默认从
$_POST全局变量中读取接口请求参数,PHP的$_POST仅会解析application/x-www-form-urlencoded、multipart/form-data两种Content-Type的请求,不会主动解析application/json类型的raw请求体,因此直接传JSON会导致后端无法读取参数,返回空响应。 - 如需兼容JSON传参,可手动修改底层逻辑,在API控制器处理参数前新增JSON解析逻辑,参考代码如下:
// 在API控制器初始化阶段或全局控制器前置逻辑中添加 if (strpos($_SERVER['CONTENT_TYPE'], 'application/json') !== false) { $json_input = json_decode(file_get_contents('php://input'), true); if (json_last_error() === JSON_ERROR_NONE && is_array($json_input)) { $this->request->post = array_merge($this->request->post, $json_input); } }
- 注意修改前请备份原有代码,避免影响其他已正常使用form-data格式调用的接口。
内容的提问来源于stack exchange,提问作者ferdinand
相关产品推荐
相关产品推荐

