Phpcms通过MVC架构创建API接口,需新建模块或控制器并编写返回JSON数据的方法,如lists和show用于获取文章列表和详情,配置URL路由后可通过index.php?m=api&c=Api&a=lists访问;为保障安全需添加token验证、IP限制、HTTPS传输及参数过滤;前端可用fetch或jQuery调用接口;常见问题包括中文乱码需设置UTF-8编码、跨域需配置Access-Control-Allow-Origin、性能优化建议启用缓存机制。

Phpcms 的 API 开发主要基于其 MVC 架构,通过创建自定义模块或利用已有接口扩展实现数据交互。虽然官方版本对 RESTful 支持较弱,但可通过控制器直接输出 JSON 格式数据来构建 API 接口。
一、API 接口创建步骤
1. 创建模块或使用已有模块
建议在 phpcms/modules/ 目录下新建一个模块(如 api),或者在 module 下新增一个控制器文件 Api.php。
2. 编写控制器方法
立即学习“PHP免费学习笔记(深入)”;
在 phpcms/modules/api/Api.php 中编写公共接口方法,例如:
class Api extends pc_base {
private $db;
public function __construct() {
parent::__construct();
$this->db = pc_base::load_model('content_model'); // 加载模型
}
// 示例:获取文章列表
public function lists() {
$catid = intval($_GET['catid']);
$page = max(1, intval($_GET['page']));
$pagesize = 10;
$this->db->set_catid($catid);
$data = $this->db->listinfo('', 'id DESC', $page, $pagesize);
header('Content-Type: application/json');
echo json_encode(['status' => 1, 'data' => $data, 'page' => $page]);
exit;
}
// 示例:获取单篇文章
public function show() {
$id = intval($_GET['id']);
if (!$id) {
echo json_encode(['status' => 0, 'msg' => '参数错误']);
exit;
}
$this->db = pc_base::load_model('content_model');
$data = $this->db->get_content($id);
header('Content-Type: application/json');
echo json_encode(['status' => 1, 'data' => $data]);
exit;
}
}
3. 配置 URL 访问路由
技术上面应用了三层结构,AJAX框架,URL重写等基础的开发。并用了动软的代码生成器及数据访问类,加进了一些自己用到的小功能,算是整理了一些自己的操作类。系统设计上面说不出用什么模式,大体设计是后台分两级分类,设置好一级之后,再设置二级并选择栏目类型,如内容,列表,上传文件,新窗口等。这样就可以生成无限多个二级分类,也就是网站栏目。对于扩展性来说,如果有新的需求可以直接加一个栏目类型并新加功能操作
Phpcms 默认 URL 格式为:index.php?m=api&c=Api&a=lists&catid=11
确保 rewrite 或动态模式可用。
二、接口安全控制
公开接口需加权限校验,避免数据泄露。
- 添加 token 验证:请求中携带 token,服务端比对是否合法
- 限制 IP 访问:白名单机制
- 启用 HTTPS 传输敏感数据
- 过滤输入参数:使用 intval、safe_replace 等函数
示例 token 验证片段:
$token = $_GET['token'];
if ($token !== 'your_secure_token') {
echo json_encode(['status' => 0, 'msg' => '无权访问']);
exit;
}
三、前端如何调用 API
使用 JavaScript(如 fetch)调用接口:
fetch('/index.php?m=api&c=Api&a=lists&catid=11')
.then(res => res.json())
.then(data => {
console.log(data.data);
});
或使用 jQuery:
$.get('index.php?m=api&c=Api&a=lists', {catid: 11}, function(res) {
if (res.status === 1) {
console.log(res.data);
}
});
四、常见问题处理
- 中文乱码:确保 PHP 输出前设置 header('Content-Type: application/json; charset=utf-8');
- 跨域问题:开发阶段可加 header('Access-Control-Allow-Origin: *'); 生产环境限定域名
- 性能优化:对高频接口增加缓存(如 file_cache 或 memcached)
基本上就这些。Phpcms 原生不提供现代 API 规范支持,需自行封装结构化响应格式和错误码。只要理解其模块加载机制和模型调用方式,就能快速实现对外数据接口。










