当前位置:首页 > PHP

php rest delete 实现

2026-02-15 16:29:50PHP

实现 PHP RESTful DELETE 方法

在 PHP 中实现 RESTful DELETE 方法需要处理 HTTP DELETE 请求,并根据请求参数执行相应的删除操作。以下是一个完整的实现示例:

检查请求方法

通过 $_SERVER['REQUEST_METHOD'] 判断是否为 DELETE 请求:

if ($_SERVER['REQUEST_METHOD'] === 'DELETE') {
    // 处理 DELETE 逻辑
}

获取请求数据

DELETE 请求通常通过 URL 参数或请求体传递数据:

php rest delete 实现

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 状态码:

php rest delete 实现

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);
});

标签: phprest
分享给朋友:

相关文章

php实现分页

php实现分页

PHP实现分页的基本方法 使用原生PHP实现分页功能需要结合数据库查询和HTML展示。以下是核心实现步骤: 数据库查询与分页逻辑 // 连接数据库 $conn = new mysqli('loca…

php实现树

php实现树

PHP实现树结构的方法 在PHP中实现树结构通常可以通过递归或迭代的方式完成。以下是几种常见的实现方法: 递归实现树结构 递归是处理树结构的自然方式,尤其适用于具有未知深度的树。 class Tr…

php 实现接口

php 实现接口

PHP 实现接口的方法 在 PHP 中,接口(Interface)用于定义一组方法的规范,而不包含具体的实现。类可以实现(implement)接口,并必须实现接口中定义的所有方法。 定义接口 接口通…

php 实现下载

php 实现下载

PHP 实现文件下载的方法 使用 PHP 实现文件下载可以通过设置 HTTP 头信息,强制浏览器将文件作为附件下载而非直接打开。 基本下载实现 $file_path = 'path/to/your/…

php 实现mvc

php 实现mvc

PHP 实现 MVC 架构的方法 MVC(Model-View-Controller)是一种常见的软件设计模式,用于分离业务逻辑、用户界面和用户输入。以下是 PHP 实现 MVC 架构的关键步骤:…

php实现域名

php实现域名

PHP实现域名操作的方法 获取当前域名 使用$_SERVER['HTTP_HOST']可以获取当前访问的域名: $currentDomain = $_SERVER['HTTP_HOST']; ech…