2025 PHP REST API 快速入门指南:从零构建到实战
作者:API传播员 · 2025-10-13 · 阅读时间:5分钟
作为 PHP 开发的新手,构建一个功能完善的 REST API 可能看起来有些复杂。但通过一份清晰、现代化的指南,您可以轻松掌握 REST API 的核心技巧。在本文中,我们将带您使用 PHP 8+ 和 MySQL 分步构建一个简单的 REST API,实现员工数据管理功能。
REST API 是现代 Web 开发的核心组件,广泛用于前后端分离架构,通过标准 HTTP 方法实现数据访问和操作。本文以获取员工列表的示例应用为案例,深入讲解 API 的构建流程和最佳实践。
一、项目文件结构
在本地创建一个目录,例如 REST-API
,用于存放以下主要文件:
文件名 | 功能说明 |
---|---|
config.php | 数据库配置与连接 |
employee.php | Employee 类:实现增删改查(CRUD)操作 |
api.php | API 入口,处理 HTTP 请求并返回 JSON 响应 |
curl_helper.php | 通用 cURL 请求函数,用于客户端调用 API |
index.php | 示例文件,演示如何调用 API 端点 |
二、数据库设计
首先创建数据库:
CREATE DATABASE employee_management;
然后创建员工表:
CREATE TABLE employee (
id INT PRIMARY KEY AUTO_INCREMENT,
emp_name VARCHAR(100) NOT NULL,
emp_code VARCHAR(20) NOT NULL,
emp_email VARCHAR(100) NOT NULL,
emp_phone VARCHAR(20) NOT NULL,
emp_address VARCHAR(255) NOT NULL,
emp_designation VARCHAR(100) NOT NULL,
emp_joining_date DATE NOT NULL
);
这是基本的员工表结构,可根据实际项目需求进行扩展。
三、核心文件说明
1. config.php
配置数据库连接,示例:
<?php
$host = 'localhost';
$db = 'employee_management';
$user = 'root';
$pass = '';
$charset = 'utf8mb4';
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
];
try {
$pdo = new PDO($dsn, $user, $pass, $options);
} catch (PDOException $e) {
die("Database connection failed: " . $e->getMessage());
}
采用 PDO 提高安全性,避免 SQL 注入风险。
2. employee.php
封装员工 CRUD 操作的 Employee
类:
<?php
class Employee {
private $conn;
public function __construct($pdo) {
$this->conn = $pdo;
}
public function getAllEmployees() {
$stmt = $this->conn->query("SELECT * FROM employee");
return $stmt->fetchAll();
}
public function getEmployeeById($id) {
$stmt = $this->conn->prepare("SELECT * FROM employee WHERE id = ?");
$stmt->execute([$id]);
return $stmt->fetch();
}
public function addEmployee($data) {
$stmt = $this->conn->prepare("INSERT INTO employee (emp_name, emp_code, emp_email, emp_phone, emp_address, emp_designation, emp_joining_date) VALUES (?, ?, ?, ?, ?, ?, ?)");
return $stmt->execute([
$data['emp_name'], $data['emp_code'], $data['emp_email'], $data['emp_phone'],
$data['emp_address'], $data['emp_designation'], $data['emp_joining_date']
]);
}
public function updateEmployee($id, $data) {
$stmt = $this->conn->prepare("UPDATE employee SET emp_name=?, emp_code=?, emp_email=?, emp_phone=?, emp_address=?, emp_designation=?, emp_joining_date=? WHERE id=?");
return $stmt->execute([
$data['emp_name'], $data['emp_code'], $data['emp_email'], $data['emp_phone'],
$data['emp_address'], $data['emp_designation'], $data['emp_joining_date'], $id
]);
}
public function deleteEmployee($id) {
$stmt = $this->conn->prepare("DELETE FROM employee WHERE id=?");
return $stmt->execute([$id]);
}
}
3. api.php
处理 HTTP 请求并返回 JSON 响应:
<?php
header('Content-Type: application/json');
require 'config.php';
require 'employee.php';
$employee = new Employee($pdo);
$method = $_SERVER['REQUEST_METHOD'];
$path = explode('/', trim($_SERVER['PATH_INFO'] ?? '', '/'));
switch ($method) {
case 'GET':
if (isset($path[1])) {
echo json_encode($employee->getEmployeeById($path[1]));
} else {
echo json_encode($employee->getAllEmployees());
}
break;
case 'POST':
$data = json_decode(file_get_contents('php://input'), true);
echo json_encode(['success' => $employee->addEmployee($data)]);
break;
case 'PUT':
$data = json_decode(file_get_contents('php://input'), true);
echo json_encode(['success' => $employee->updateEmployee($path[1], $data)]);
break;
case 'DELETE':
echo json_encode(['success' => $employee->deleteEmployee($path[1])]);
break;
default:
http_response_code(405);
echo json_encode(['error' => 'Method Not Allowed']);
}
4. curl_helper.php
提供统一的 API 请求方法:
<?php
function sendRequest($url, $method = 'GET', $data = []) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
if (in_array($method, ['POST', 'PUT'])) {
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
} elseif ($method === 'DELETE') {
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
}
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
return json_encode(['response' => $response, 'http_code' => $httpCode]);
}
5. index.php
示例
调用 API 端点示例:
require 'curl_helper.php';
// 获取所有员工
$employees = json_decode(sendRequest('http://localhost/REST-API/api.php/employees'), true);
// 添加新员工
$data = [
'emp_name' => 'Alice Smith',
'emp_code' => 'E100',
'emp_email' => 'alice@example.com',
'emp_phone' => '1234567890',
'emp_address' => '123 Main St',
'emp_designation' => 'Developer',
'emp_joining_date' => '2025-01-01',
];
$result = json_decode(sendRequest('http://localhost/REST-API/api.php/employees', 'POST', $data), true);
使用
index.php
可以快速测试 API 功能。
四、最佳实践与优化(2025 风格)
- 使用 PHP 8+ 功能:类型声明、命名参数、箭头函数。
- 安全性:使用 PDO 和参数化查询防止 SQL 注入。
- 响应标准化:统一 JSON 输出格式,包含状态码和错误信息。
- 版本控制:建议在 URL 中加入 API 版本,如
/api/v1/employees
。 - 可扩展性:通过单独类封装 CRUD,方便未来添加复杂业务逻辑。
- 日志和监控:记录 API 请求日志,便于调试和性能分析。
五、总结
通过本教程,您已经掌握了 使用 PHP 和 MySQL 构建 REST API 的完整流程,从数据库设计到 API 封装、HTTP 请求处理及客户端调用。借助现代 PHP 特性和安全实践,您可以轻松构建可维护、可扩展的 API,为后续开发提供坚实基础。
原文链接: https://wpwebinfotech.com/blog/how-to-build-simple-rest-api-in-php/
热门推荐
一个账号试用1000+ API
助力AI无缝链接物理世界 · 无需多次注册
3000+提示词助力AI大模型
和专业工程师共享工作效率翻倍的秘密
热门API
- 1. AI文本生成
- 2. AI图片生成_文生图
- 3. AI图片生成_图生图
- 4. AI图像编辑
- 5. AI视频生成_文生视频
- 6. AI视频生成_图生视频
- 7. AI语音合成_文生语音
- 8. AI文本生成(中国)
最新文章
- GPT-OSS 模型驱动在线编程课 AI 助教,3 天打造追问式对话 API
- Kimi K2-0905 256K上下文API状态管理优化:长流程复杂任务实战
- Go工程化(四) API 设计上: 项目结构 & 设计
- 如何获取Dify AI API开放平台秘钥(分步指南)
- 手机号查询API:获取个人信息的便捷工具
- 大型项目中如何规避 Claude 限流风险?开发实战指南
- 为什么要编写高质量的在线API文档?
- 基于DeepSeek-V3.1开源技术的开发者社区应用审核API指南
- 2025 PHP REST API 快速入门指南:从零构建到实战
- TikTok API使用指南:短视频图像生成实践案例
- Java 生鲜电商平台 – API 接口设计之 token、timestamp、sign 具体架构与实现
- HIP-1217热点:DeFi镜像节点API实时gRPC流式余额校验实战