php rest delete 实现
实现 PHP RESTful DELETE 方法
在 PHP 中实现 RESTful DELETE 方法需要处理 HTTP DELETE 请求,并根据请求参数执行相应的删除操作。以下是一个完整的实现示例:
检查请求方法
通过 $_SERVER['REQUEST_METHOD'] 判断是否为 DELETE 请求:
if ($_SERVER['REQUEST_METHOD'] === 'DELETE') {
// 处理 DELETE 逻辑
}
获取请求数据
DELETE 请求通常通过 URL 参数或请求体传递数据:

parse_str(file_get_contents('php://input'), $deleteData);
$id = isset($_GET['id']) ? $_GET['id'] : ($deleteData['id'] ?? null);
数据库删除操作
假设使用 MySQLi 进行数据库操作:
$db = new mysqli('localhost', 'username', 'password', 'database');
$stmt = $db->prepare("DELETE FROM items WHERE id = ?");
$stmt->bind_param("i", $id);
$result = $stmt->execute();
返回响应
根据操作结果返回适当的 HTTP 状态码:

header('Content-Type: application/json');
if ($result) {
http_response_code(204); // 成功无内容
echo json_encode(['message' => 'Resource deleted']);
} else {
http_response_code(404); // 未找到
echo json_encode(['error' => 'Resource not found']);
}
完整示例代码
<?php
header('Content-Type: application/json');
if ($_SERVER['REQUEST_METHOD'] === 'DELETE') {
parse_str(file_get_contents('php://input'), $deleteData);
$id = $_GET['id'] ?? $deleteData['id'] ?? null;
if ($id) {
$db = new mysqli('localhost', 'username', 'password', 'database');
if ($db->connect_error) {
http_response_code(500);
echo json_encode(['error' => 'Database connection failed']);
exit;
}
$stmt = $db->prepare("DELETE FROM users WHERE id = ?");
$stmt->bind_param("i", $id);
if ($stmt->execute()) {
http_response_code(204);
} else {
http_response_code(404);
echo json_encode(['error' => 'User not found']);
}
} else {
http_response_code(400);
echo json_encode(['error' => 'Missing ID parameter']);
}
} else {
http_response_code(405);
echo json_encode(['error' => 'Method Not Allowed']);
}
?>
安全注意事项
- 验证用户权限确保只有授权用户能执行删除
- 使用预处理语句防止 SQL 注入
- 考虑实现软删除而非物理删除
- 记录删除操作日志
使用框架的实现
如果使用 Laravel 框架:
Route::delete('/users/{id}', function ($id) {
$user = User::find($id);
if ($user) {
$user->delete();
return response()->noContent();
}
return response()->json(['error' => 'User not found'], 404);
});
对于 Slim 框架:
$app->delete('/users/{id}', function (Request $request, Response $response, array $args) {
$id = $args['id'];
// 删除逻辑
return $response->withStatus(204);
});






