假设我们要创建一个处理用户信息的RESTful API,包括用户的增删改查操作。
1. 创建一个简单的用户类(user.php):
<?php
class User {
public $id;
public $name;
public $email;
public function __construct($id, $name, $email) {
$this->id = $id;
$this->name = $name;
$this->email = $email;
}
}
?>
2. 创建RESTful API脚本(api.php):
<?php
header("Content-Type: application/json");
require_once 'user.php';
// 获取请求方法和URI
$method = $_SERVER['REQUEST_METHOD'];
$uri = $_SERVER['REQUEST_URI'];
// 解析URI
$parts = explode('/', $uri);
// 获取资源和资源ID
$resource = $parts[1];
$resourceId = isset($parts[2]) ? $parts[2] : null;
// 模拟数据库中的用户数据
$users = [
new User(1, 'John Doe', 'john@example.com'),
new User(2, 'Jane Smith', 'jane@example.com'),
];
// 处理请求
switch ($method) {
case 'GET':
// 获取用户列表或单个用户
if ($resource === 'users') {
if ($resourceId === null) {
echo json_encode($users);
} else {
$user = $users[$resourceId - 1];
echo json_encode($user);
}
}
break;
case 'POST':
// 创建新用户
$data = json_decode(file_get_contents("php://input"), true);
$newUser = new User(count($users) + 1, $data['name'], $data['email']);
$users[] = $newUser;
echo json_encode($newUser);
break;
case 'PUT':
// 更新用户
if ($resource === 'users' && $resourceId !== null) {
$data = json_decode(file_get_contents("php://input"), true);
$users[$resourceId - 1]->name = $data['name'];
$users[$resourceId - 1]->email = $data['email'];
echo json_encode($users[$resourceId - 1]);
}
break;
case 'DELETE':
// 删除用户
if ($resource === 'users' && $resourceId !== null) {
$deletedUser = $users[$resourceId - 1];
unset($users[$resourceId - 1]);
echo json_encode($deletedUser);
}
break;
default:
// 不支持的请求方法
http_response_code(405);
echo json_encode(['error' => 'Method Not Allowed']);
break;
}
?>
在这个简单的例子中,我们模拟了一个用户类和一个包含用户数据的数组。根据请求的HTTP方法和URI,我们执行相应的操作。请注意,这只是一个基本的示例,实际应用可能需要更复杂的结构和数据存储机制。此外,实际项目中的RESTful API通常会使用框架(例如Laravel、Symfony)来简化开发。
转载请注明出处:http://www.pingtaimeng.com/article/detail/13871/PHP