所有文章 > API开发 > 用纯PHP创建REST API:全栈开发者必备的从零到一实践
用纯PHP创建REST API:全栈开发者必备的从零到一实践

用纯PHP创建REST API:全栈开发者必备的从零到一实践

前言

随着 前端开发 技术的迅猛发展,全栈开发 已成为开发者的重要技能。然而,许多开发者在掌握流行框架(如 LaravelSymfony)时,往往忽视了 PHP 的底层实现。深入学习纯 PHP 创建 REST API 的能力,对于增强 Web 开发技能至关重要。本文将引导你通过 PHP 从零开始,手把手教你如何创建一个功能完善的 RESTful API,并帮助你更好地理解其底层机制。

项目概述

在这个项目中,我们将为一个简单的博客系统创建 API,其中包含文章和分类功能。通过实现这个项目,你将学习以下技能:

  • PHP面向对象编程(OOP) 技术
  • 数据库连接与操作(MySQL)
  • RESTful API设计原则 和最佳实践
  • 使用 Postman 测试 API 的技能

技术栈

为了帮助你更高效地构建和测试 API,本文所使用的技术栈包括:

  • PHP:核心编程语言,用于实现业务逻辑。
  • MySQL:关系型数据库,用于存储数据。
  • Postman:API 测试工具,确保 API 接口的可靠性。
  • XAMPP:本地开发环境,包含 Apache 和 MySQL。
  • PDO:PHP 数据对象,简化与数据库的交互。

一、项目初始化

1. 数据库准备

为了存储博客文章和分类信息,我们需要先配置数据库。以下是 SQL 结构:

-- posts表结构
CREATE TABLE posts (
    id INT PRIMARY KEY AUTO_INCREMENT,
    category_id INT,
    title VARCHAR(255),
    body TEXT,
    author VARCHAR(255),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- categories表结构
CREATE TABLE categories (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(255),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

按照以下步骤进行数据库设置:

  1. 启动 XAMPP 中的 MySQL 服务。
  2. phpMyAdmin 中创建一个名为 my_blog 的数据库。
  3. 导入以上的 SQL 文件(可以通过项目的 GitHub 仓库下载)。

2. 项目文件结构

接下来,创建以下文件夹和文件结构:

php_rest_myblog/
├── config/
│ └── Database.php
├── models/
│ └── Post.php
├── api/
│ └── posts/
│ └── read.php

二、数据库连接类

1. 创建 Database

config/Database.php 中,创建用于连接数据库的 Database 类:

< ?php
class Database {
    private $host = "localhost";
    private $dbname = "my_blog";
    private $username = "root";
    private $password = "";
    private $conn;

    public function connect() {
        $this- > conn = null;

        try {
            $this- > conn = new PDO(
                "mysql:host=" . $this- > host . ";dbname=" . $this- > dbname,
                $this- > username,
                $this- > password
            );
            $this- > conn- > setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        } catch (PDOException $e) {
            echo "Connection Error: " . $e- > getMessage();
        }

        return $this- > conn;
    }
}
? > 

三、模型类开发

1. 创建 Post 模型类


models/Post.php 中,创建处理文章数据的 Post 模型类:

< ?php
class Post {
    private $conn;
    private $table = "posts";

    public $id;
    public $category_id;
    public $title;
    public $body;
    public $author;
    public $created_at;

    public function __construct($db) {
        $this- > conn = $db;
    }

    public function read() {
        $query = "SELECT c.name AS category_name, p.id, p.category_id, p.title, p.body, p.author, p.created_at
                  FROM " . $this- > table . " p
                  LEFT JOIN categories c ON p.category_id = c.id
                  ORDER BY p.created_at DESC";

        $stmt = $this- > conn- > prepare($query);
        $stmt- > execute();

        return $stmt;
    }
}
? > 

四、API端点开发

1. 创建文章读取端点

api/posts/read.php 中,创建 REST API 端点来读取文章数据:

< ?php
header('Access-Control-Allow-Origin: *');
header('Content-Type: application/json');

include_once '../../config/Database.php';
include_once '../../models/Post.php';

$database = new Database();
$db = $database- > connect();

$post = new Post($db);
$result = $post- > read();
$num = $result- > rowCount();

if ($num  >  0) {
    $posts_arr = array();
    $posts_arr['data'] = array();

    while ($row = $result- > fetch(PDO::FETCH_ASSOC)) {
        extract($row);

        $post_item = array(
            'id' = >  $id,
            'title' = >  $title,
            'body' = >  html_entity_decode($body),
            'author' = >  $author,
            'category_id' = >  $category_id,
            'category_name' = >  $category_name
        );

        array_push($posts_arr['data'], $post_item);
    }

    echo json_encode($posts_arr);
} else {
    echo json_encode(array('message' = >  'No Posts Found'));
}
? > 

五、API 测试


通过 Postman 测试 API:

  1. 打开 Postman
  2. 创建 GET 请求。
  3. 输入 URL:http://localhost/php_rest_myblog/api/posts/read.php
  4. 点击 Send 按钮。

如果配置无误,你将看到返回的 JSON 数据,包含所有文章及其分类信息。


总结

通过本文,你已经学会如何使用 纯PHP 创建 RESTful API。这种从零开始的方式虽然更为繁琐,但能帮助你深入理解 Web 开发的核心概念。希望你能从中获得启发,打造更复杂的项目!

原文引自YouTube视频:https://www.youtube.com/watch?v=OEWXbpUMODk

#你可能也喜欢这些API文章!

我们有何不同?

API服务商零注册

多API并行试用

数据驱动选型,提升决策效率

查看全部API→
🔥

热门场景实测,选对API

#AI文本生成大模型API

对比大模型API的内容创意新颖性、情感共鸣力、商业转化潜力

25个渠道
一键对比试用API 限时免费

#AI深度推理大模型API

对比大模型API的逻辑推理准确性、分析深度、可视化建议合理性

10个渠道
一键对比试用API 限时免费