php 8 rest接口返回json需设置content-type头、统一响应结构、按http方法处理请求、匹配状态码并校验输入:开头设header('content-type: application/json; charset=utf-8'),封装code/message/data结构,用json_encode($data, json_unescaped_unicode | json_unescaped_slashes),解析php://input并检查json_last_error(),依操作设置201/404/400等状态码。

PHP 8 编写 REST 接口返回 JSON,核心是正确设置响应头、规范输出格式,并配合合理的请求处理逻辑。不需要框架也能快速实现,但要注意错误处理、内容类型声明和数据安全性。
设置正确的响应头和 Content-Type
REST 接口必须明确告知客户端返回的是 JSON 数据,否则前端可能解析失败:
- 用 header('Content-Type: application/json; charset=utf-8'); 声明类型和编码
- 避免在输出 JSON 前有任何 echo、var_dump 或空白字符(包括文件末尾的换行),否则 JSON 会损坏
- 推荐在脚本开头就设置 header,防止后续意外输出
统一返回结构,提升接口可维护性
不要直接 echo json_encode($data),应封装标准响应格式,例如:
$response = [
'code' => 200,
'message' => 'success',
'data' => $your_data
];
echo json_encode($response, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
- JSON_UNESCAPED_UNICODE 防止中文被转成 \uXXXX
- JSON_UNESCAPED_SLASHES 避免 URL 中的斜杠被转义
- 建议始终包含 code 和 message 字段,便于前端统一处理
根据 HTTP 方法区分操作逻辑
一个典型资源接口(如 /api/users)需支持不同动词:
DMap GL地图JSAPI(dmapgl)开发指南。用于编写、审查、调试 DMap 地图 API 代码,涵盖地图初始化、覆盖物渲染、图层管理、事件处理、控件交互等任务。当用户提及 dmap、dmapgl、jsapi‑gl 或相关地图开发需求时自动触发。
- GET:读取列表或单条(通过 ?id=1 判断)
- POST:创建新资源(用 file_get_contents('php://input') 获取原始 JSON 请求体)
- PUT/PATCH:更新(同样需解析 input 流)
- DELETE:删除(通常用 ?id=1 或路径参数)
示例判断方式:
$method = $_SERVER['REQUEST_METHOD'];
if ($method === 'POST') {
$raw = file_get_contents('php://input');
$input = json_decode($raw, true);
if (json_last_error() !== JSON_ERROR_NONE) {
http_response_code(400);
echo json_encode(['code'=>400, 'message'=>'Invalid JSON']);
exit;
}
}
处理错误与状态码要严格对应
HTTP 状态码是 REST 的重要约定,不能全用 200:
- 成功创建:用 http_response_code(201)
- 资源未找到:用 http_response_code(404),并返回相应 message
- 参数缺失或校验失败:用 400
- 权限不足:用 403
- 服务端异常:用 500,同时记录日志,不暴露敏感信息给前端
注意:调用 http_response_code() 必须在任何输出之前,否则无效。
不复杂但容易忽略细节,把 header、状态码、JSON 选项和输入解析四点对齐,就能写出符合规范的 PHP 8 REST 接口。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










