<返回目录     Powered by claud/xia兄

第14课: RESTful API开发

RESTful API基础

REST API使用HTTP方法进行CRUD操作:

获取请求方法

<?php
$method = $_SERVER['REQUEST_METHOD'];

switch ($method) {
    case 'GET':
        getUsers();
        break;
    case 'POST':
        createUser();
        break;
    case 'PUT':
        updateUser();
        break;
    case 'DELETE':
        deleteUser();
        break;
}
?>

JSON响应

<?php
header('Content-Type: application/json');

$response = [
    'status' => 'success',
    'data' => [
        'id' => 1,
        'name' => '张三'
    ]
];

echo json_encode($response);
?>

处理JSON输入

<?php
$json = file_get_contents('php://input');
$data = json_decode($json, true);

$name = $data['name'] ?? '';
$email = $data['email'] ?? '';
?>

完整API示例

<?php
header('Content-Type: application/json');

function sendResponse($status, $data = null, $message = '') {
    http_response_code($status);
    echo json_encode([
        'status' => $status < 400 ? 'success' : 'error',
        'data' => $data,
        'message' => $message
    ]);
    exit;
}

// GET /api/users
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
    $users = $pdo->query("SELECT * FROM users")->fetchAll();
    sendResponse(200, $users);
}

// POST /api/users
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $data = json_decode(file_get_contents('php://input'), true);

    $stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (?, ?)");
    $stmt->execute([$data['name'], $data['email']]);

    sendResponse(201, ['id' => $pdo->lastInsertId()], '创建成功');
}
?>

CORS处理

<?php
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE');
header('Access-Control-Allow-Headers: Content-Type');

if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
    exit(0);
}
?>