PHP 接口开发入门:接收请求、处理数据、返回 JSON
PHP 写接口的核心就三件事:接收请求、处理数据、返回 JSON。框架帮你把这套流程标准化了,但理解原生写法,能帮你明白框架背后在做什么。
一个最小接口长什么样
<?php
header("Content-Type: application/json; charset=utf-8");
$method = $_SERVER["REQUEST_METHOD"];
$path = trim(parse_url($_SERVER["REQUEST_URI"], PHP_URL_PATH), "/");
// 简单路由:GET /api/hello
if ($method === "GET" && $path === "api/hello") {
echo json_encode(["code" => 0, "data" => ["message" => "你好,接口"]], JSON_UNESCAPED_UNICODE);
exit;
}
echo json_encode(["code" => 404, "message" => "接口不存在"]);这段代码展示了接口的基本骨架:设置 JSON 响应头、按方法和路径分发、统一 JSON 返回。真实项目里路由会抽出来做配置,但原理一样。
接收参数
GET 参数在 $_GET,POST 表单在 $_POST,JSON body 要自己读:
$raw = file_get_contents("php://input");
$data = json_decode($raw, true);前端用 fetch 传 JSON 时,后端必须用上面这种方式取,$_POST 是空的。
统一返回格式
给所有接口定一个固定的返回结构,前端写起来省心:
function resp($data = null, $code = 0, $msg = "ok") {
echo json_encode([
"code" => $code,
"msg" => $msg,
"data" => $data
], JSON_UNESCAPED_UNICODE);
exit;
}异常处理
接口里出错不能直接白屏,要捕获后返回结构化错误:
try {
$user = get_user($id);
if (!$user) resp(null, 404, "用户不存在");
resp($user);
} catch (Throwable $e) {
resp(null, 500, "服务器开小差了");
}安全提醒
写接口最容易出的三个安全问题:
- SQL 注入:拼 SQL 时参数必须走预处理(PDO prepare),永远不要直接拼接用户输入;
- 越权:拿到 id 就查数据,不考虑这个 id 是不是当前用户自己的——接口要校验资源归属;
- 信息泄露:报错信息里带 SQL、路径等细节,线上环境要关掉错误显示(
display_errors = Off)。
接口开发 80% 的时间在处理数据和排查问题,骨架搭好、格式统一、异常兜底,剩下的就是业务逻辑的事。配合上一篇 RESTful 设计规范看,一套完整的接口体系就成型了。