在apahce的htdocs目录下新建api目录,用vscode打开,然后新建php文件
以user.php为例:
// 允许的来源和允许的方法、头信息
$allowed_origins = array('http://localhost:5173');
$allowed_methods = 'POST, GET, OPTIONS';
$allowed_headers = 'Authorization, Content-Type';
// 获取请求头中的来源和请求方法
$request_origin = isset($_SERVER['HTTP_ORIGIN']) ? $_SERVER['HTTP_ORIGIN'] : '';
$request_method = isset($_SERVER['REQUEST_METHOD']) ? $_SERVER['REQUEST_METHOD'] : '';
// 检查请求的来源是否在允许的来源列表中
if (in_array($request_origin, $allowed_origins)) {
header('Access-Control-Allow-Origin: ' . $request_origin);
}
// 处理 OPTIONS 请求(预检请求)
if ($request_method === 'OPTIONS') {
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: $allowed_methods");
header("Access-Control-Allow-Headers: $allowed_headers");
http_response_code(200);
exit;
}
// 设置 CORS 头信息
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Expose-Headers: *');
//链接数据库
$conn = new mysqli("localhost", "root", "root", "schoolnews");
if ($conn->connect_error) {
die("Could not connect to database!");
}
// 创建返回的数据对象
$res = array('error' => false);
//构建接口
$action = "";
if (isset($_GET['action'])) {
$action = $_GET['action'];
}
// 获取所有用户
if ($action == "getUser") {
//中文乱码时,添加如下内容
$conn->query("set names utf8");
//进行sql查询,获取数据库中数据
$result = $conn->query("SELECT * FROM `user`");
$user_data = array();
if ($result !== false && $result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
array_push($user_data, $row);
}
}
$res['mesg'] = "获取成功";
$res['data'] = $user_data;
//以json格式返回数据
echo json_encode($res);
$conn->close();
die();
}
// 删除用户
if ($action == "deleteUser") {
$id = $_POST['id'];
//中文乱码时,添加如下内容
$conn->query("set names utf8");
//进行sql查询,获取数据库中数据
$sql=$conn->query("DELETE FROM `user` WHERE `id`=$id");
//判断删除是否成功
if ($conn->query($sql) === TRUE) {
$res['mesg'] = "删除成功";
$res['type'] = "success";
} else {
$res['mesg'] = "删除失败:" . $conn->error;
$res['type'] = "error";
}
//返回数据
echo json_encode($res);
$conn->close();
die();
}
编写好接口后,前端调用接口
import httpInstance from "@/utils/http";
//获取所有用户
export const getUserAPI = () => httpInstance.get('/SchoolNews/Api/admin.php?action=getUser')
//删除用户
export const deleteUserAPI = (id) => {
// 构造要发送的数据
const data = new URLSearchParams();
data.append('id', id);
return httpInstance.post('/SchoolNews/Api/user.php?action=deleteUser', data);
}