如何获取并使用API网站的PHP源码?

小贝
预计阅读时长 20 分钟
位置: 首页 抖音 正文

可以为你提供一个详细的PHP API网站源码示例,这个示例将包括基本的CRUD操作(创建、读取、更新、删除)以及一些基本的错误处理和输入验证。

api网站php源码

假设我们要创建一个管理用户信息的API,以下是完整的代码示例:

数据库连接 (`db.php`)

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "api_demo";
try {
    $pdo = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // 设置PDO错误模式为异常
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
    die("数据库连接失败: " . $e->getMessage());
}
?>

用户模型 (`User.php`)

<?php
require 'db.php';
class User {
    private $pdo;
    private $table = 'users';
    public function __construct() {
        global $pdo;
        $this->pdo = $pdo;
    }
    public function getAllUsers() {
        $stmt = $this->pdo->query("SELECT * FROM $this->table");
        return $stmt->fetchAll(PDO::FETCH_ASSOC);
    }
    public function getUserById($id) {
        $stmt = $this->pdo->prepare("SELECT * FROM $this->table WHERE id = :id");
        $stmt->bindParam(':id', $id, PDO::PARAM_INT);
        $stmt->execute();
        return $stmt->fetch(PDO::FETCH_ASSOC);
    }
    public function createUser($data) {
        $stmt = $this->pdo->prepare("INSERT INTO $this->table (name, email) VALUES (:name, :email)");
        $stmt->bindParam(':name', $data['name']);
        $stmt->bindParam(':email', $data['email']);
        return $stmt->execute();
    }
    public function updateUser($id, $data) {
        $stmt = $this->pdo->prepare("UPDATE $this->table SET name = :name, email = :email WHERE id = :id");
        $stmt->bindParam(':name', $data['name']);
        $stmt->bindParam(':email', $data['email']);
        $stmt->bindParam(':id', $id, PDO::PARAM_INT);
        return $stmt->execute();
    }
    public function deleteUser($id) {
        $stmt = $this->pdo->prepare("DELETE FROM $this->table WHERE id = :id");
        $stmt->bindParam(':id', $id, PDO::PARAM_INT);
        return $stmt->execute();
    }
}
?>

3. API端点 (index.php)

<?php
header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE');
header('Access-Control-Allow-Headers: Content-Type');
require 'User.php';
$user = new User();
$method = $_SERVER['REQUEST_METHOD'];
$requestBody = json_decode(file_get_contents('php://input'), true);
switch ($method) {
    case 'GET':
        if (isset($_GET['id'])) {
            $userId = intval($_GET['id']);
            $response = $user->getUserById($userId);
            echo json_encode($response);
        } else {
            $response = $user->getAllUsers();
            echo json_encode($response);
        }
        break;
    case 'POST':
        if (!empty($requestBody) && isset($requestBody['name'], $requestBody['email'])) {
            $response = $user->createUser($requestBody);
            echo json_encode(['status' => 'success', 'message' => 'User created successfully']);
        } else {
            http_response_code(400);
            echo json_encode(['status' => 'error', 'message' => 'Invalid input']);
        }
        break;
    case 'PUT':
        if (!empty($requestBody) && isset($requestBody['id'], $requestBody['name'], $requestBody['email'])) {
            $response = $user->updateUser(intval($requestBody['id']), $requestBody);
            echo json_encode(['status' => 'success', 'message' => 'User updated successfully']);
        } else {
            http_response_code(400);
            echo json_encode(['status' => 'error', 'message' => 'Invalid input']);
        }
        break;
    case 'DELETE':
        if (isset($requestBody['id'])) {
            $response = $user->deleteUser(intval($requestBody['id']));
            echo json_encode(['status' => 'success', 'message' => 'User deleted successfully']);
        } else {
            http_response_code(400);
            echo json_encode(['status' => 'error', 'message' => 'Invalid input']);
        }
        break;
    default:
        http_response_code(405); // Method Not Allowed
        echo json_encode(['status' => 'error', 'message' => 'Method not allowed']);
        break;
}
?>

4. 初始化数据库 (init_db.sql)

CREATE DATABASE api_demo;
USE api_demo;
CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(100) NOT NULL UNIQUE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

运行步骤:

1、创建数据库:执行init_db.sql 脚本来创建数据库和用户表。

2、配置环境:确保你的PHP开发环境已经配置好,并且支持PDO扩展。

3、部署代码:将上述PHP文件上传到你的服务器或本地开发环境中。

4、测试API:使用Postman或其他HTTP客户端工具进行API测试。

api网站php源码

GET /?id=1: 获取ID为1的用户信息。

GET /: 获取所有用户信息。

POST /: 创建新用户,发送JSON数据如{"name": "John Doe", "email": "john@example.com"}

PUT /: 更新用户信息,发送JSON数据如{"id": 1, "name": "Jane Doe", "email": "jane@example.com"}

DELETE /: 删除用户,发送JSON数据如{"id": 1}

这样,你就拥有了一个基本的PHP API网站,可以进行用户信息的管理,你可以根据需要进一步扩展和完善这个API。

小伙伴们,上文介绍了“api网站php源码”的内容,你了解清楚吗?希望对你有所帮助,任何问题可以给我留言,让我们下期再见吧。

-- 展开阅读全文 --
头像
APM在Linux系统中的应用与优势是什么?
« 上一篇 2024-12-03
服务器是否需要安装杀毒软件?
下一篇 » 2024-12-03
取消
微信二维码
支付宝二维码

发表评论

暂无评论,1人围观

目录[+]