PHP CRUD API là gì?

Hướng dẫn này nhằm cung cấp cho bạn phần giới thiệu chuyên sâu về PHP (phiên bản PHP 7) bằng cách xây dựng API CRUD REST đơn giản

Cũng đọc. Cách triển khai xác thực JWT và truy cập tiêu đề Ủy quyền trong PHP

Bạn cũng sẽ tìm hiểu về các khái niệm quan trọng như hoạt động CRUD và PHP PDO, v.v.

Trong hướng dẫn PHP 7 này, chúng ta sẽ tìm hiểu bằng ví dụ về cách tạo API REST với PHP 7 và MySQL. Chúng ta sẽ xem các triển khai ví dụ cho các phương thức HTTP GET và HTTP POST và chúng ta sẽ sử dụng

CREATE TABLE `Family` (
  `id` int(11)  UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
  `reference` varchar(50),
  `name` varchar(100),
  `createdAt` datetime NOT NULL,
  `updatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
  );
3 để trả về dữ liệu ở định dạng JSON

API REST, chúng ta sẽ tạo trong hướng dẫn này, sẽ là cơ sở của các hướng dẫn tiếp theo để thêm xác thực dựa trên JWT và xây dựng giao diện người dùng của bạn với các khung và thư viện JavaScript/TypeScript hiện đại như Angular, React. js và Vue. js, v.v.

Trong hướng dẫn này, chúng ta sẽ tạo một ứng dụng PHP CRUD (Tạo, Đọc, Cập nhật và Xóa) mẫu thực hiện các phương thức API HTTP tương đương mà tôi. e NHẬN, ĐĂNG, ĐẶT và XÓA

Hướng dẫn API PHP và MySQL REST. Tạo API RESTful (Ví dụ HTTP POST và GET) Từng bước

Xuyên suốt hướng dẫn, chúng ta sẽ tạo một API đơn giản (nhưng đồng thời đó là một API trong thế giới thực. Trên thực tế, bạn có thể sử dụng nó để xây dựng một ứng dụng theo dõi hàng tồn kho nhỏ) với kiến ​​trúc (và cấu trúc tệp) đơn giản và đơn giản nhất. Chúng tôi sẽ không đề cập đến các khái niệm nâng cao như MVC, định tuyến hoặc ngôn ngữ mẫu (chúng tôi sẽ sử dụng chính PHP 7 làm ngôn ngữ mẫu. Tôi biết đó là một cách làm không tốt nhưng đây là cách bạn thực hiện khi bạn mới bắt đầu sử dụng PHP 7, nếu bạn đang tìm kiếm những khái niệm này thì tốt hơn bạn nên sử dụng một khung công tác PHP, hầu hết chúng được xây dựng dựa trên những khái niệm nâng cao này) nên hướng dẫn này có thể

Đối với cơ sở dữ liệu, bạn sẽ sử dụng MySQL, cơ sở dữ liệu phổ biến nhất cho các ứng dụng PHP

CRUD là viết tắt của Tạo, Đọc, Cập nhật và Xóa và nó đề cập đến một tập hợp các thao tác phổ biến trong hầu hết các ứng dụng web hướng dữ liệu mà bạn cần truy cập cơ sở dữ liệu để tạo và thao tác dữ liệu

Đồng thời đọc Hướng dẫn và ví dụ về tải lên hình ảnh/tệp PHP [FormData và Angular 7 Front-End]

API là viết tắt của Giao diện lập trình ứng dụng. Đó là một giao diện cho phép các ứng dụng giao tiếp với nhau. Trong trường hợp web, nó đề cập đến giao diện (một tập hợp các URL cho phép bạn trao đổi dữ liệu với một ứng dụng web thông qua một tập hợp các hoạt động thường được gọi là CRUD - -Các hoạt động Tạo, Đọc, Cập nhật và Xóa bằng cách gửi các yêu cầu HTTP chẳng hạn như

REST là viết tắt của Chuyển giao trạng thái đại diện". Đó là một bộ quy tắc xác định cách trao đổi tài nguyên trong một hệ thống phân tán, chẳng hạn như trạng thái. e máy chủ không lưu giữ bất kỳ thông tin nào về các yêu cầu trước đó, điều đó có nghĩa là yêu cầu hiện tại phải bao gồm mọi thông tin mà máy chủ cần để thực hiện thao tác mong muốn. Dữ liệu thường được trao đổi ở định dạng JSON (JavaScript Object Notation)

Vì vậy, API REST đề cập đến giao diện cho phép thiết bị di động và trình duyệt web (hoặc cả các máy chủ web khác) tạo, đọc, cập nhật và xóa tài nguyên trong máy chủ tuân theo các quy tắc REST (chẳng hạn như không trạng thái)

Sử dụng REST, bạn có thể xây dựng một back-end và sau đó xây dựng các ứng dụng khách hoặc giao diện người dùng khác nhau cho trình duyệt web và thiết bị di động (iOS và Android, v.v. ) vì back-end được tách rời khỏi front-end--giao tiếp giữa ứng dụng khách và ứng dụng máy chủ diễn ra thông qua giao diện REST. Bạn có thể cung cấp cho người dùng của mình một ứng dụng khác hoặc bạn có thể tạo thêm ứng dụng để hỗ trợ các nền tảng di động khác mà không cần chạm vào mã back-end

Để xây dựng một API web, bạn cần một cách để lưu trữ dữ liệu, phía sau hiện trường, trong cơ sở dữ liệu của máy chủ của bạn. Đối với hướng dẫn này, chúng tôi sẽ sử dụng MySQL RDMS (Hệ thống quản lý cơ sở dữ liệu quan hệ), đây là hệ thống cơ sở dữ liệu được sử dụng nhiều nhất trong thế giới PHP

Bước đầu tiên là thiết kế cơ sở dữ liệu của chúng tôi, vì vậy chúng tôi sẽ sử dụng Sơ đồ mối quan hệ thực thể

Sơ đồ mối quan hệ thực thể, hay còn gọi là mô hình mối quan hệ thực thể, là biểu diễn đồ họa của các thực thể và cách chúng liên quan với nhau. Chúng được sử dụng để mô hình hóa cơ sở dữ liệu quan hệ. Trong sơ đồ ER, bạn sử dụng các thực thể (hộp) để biểu thị các khái niệm hoặc đối tượng trong thế giới thực và các mối quan hệ (mũi tên) để biểu thị mối quan hệ giữa hai thực thể

Có ba loại quan hệ. Một đối một, Một đối nhiều và Nhiều đối nhiều

Đây là ảnh chụp màn hình của một mô hình ER ví dụ cho cơ sở dữ liệu của chúng tôi

PHP CRUD API là gì?

Chúng tôi có bốn thực thể có liên quan với nhau. Một sản phẩm có họ, thuộc địa điểm và có thể có nhiều giao dịch liên quan

Sau khi tạo một mô hình ER, bạn có thể dễ dàng viết các câu lệnh SQL CREATE để tạo các bảng SQL trong cơ sở dữ liệu MySQL. Bạn có thể chỉ cần ánh xạ từng thực thể vào bảng SQL và các mối quan hệ với khóa ngoại

Bất kỳ công cụ lập biểu đồ ER phù hợp nào cũng sẽ bao gồm một nút xuất có thể giúp bạn tạo tập lệnh SQL từ mô hình ER của mình mà không cần phải viết thủ công

Bây giờ hãy tạo SQL cho cơ sở dữ liệu của chúng tôi

CREATE TABLE `Product` (
  `id` int(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
  `sku` varchar(255),
  `barcode` varchar(255),
  `name` varchar(100),
  `price` float,
  `unit` varchar(20),
  `quantity` float,
  `minquantity` float,
  `createdAt` datetime NOT NULL,
  `updatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `familyid` int(11) NOT NULL,
  `locationid` int(11) NOT NULL
);

CREATE TABLE `Family` (
  `id` int(11)  UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
  `reference` varchar(50),
  `name` varchar(100),
  `createdAt` datetime NOT NULL,
  `updatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
  );

CREATE TABLE `Transaction` (
  `id` int(11)  UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
  `comment` text,
  `price` float,
  `quantity` float,
  `reason` enum('New Stock','Usable Return','Unusable Return'),
  `createdAt` datetime NOT NULL,
  `updatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `productid` int(11) NOT NULL
);

CREATE TABLE `Location` (
  `id` int(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
  `reference` varchar(50),
  `description` text,
  `createdAt` datetime NOT NULL,
  `updatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
);

Bạn có thể PhpMyAdmin hoặc ứng dụng khách dựa trên MySQL CLI để tạo cơ sở dữ liệu mới, sau đó sao chép và chạy các truy vấn SQL trước đó để tạo bảng mới

PHP CRUD API là gì?

Bạn cũng có thể sử dụng tập lệnh

CREATE TABLE `Family` (
  `id` int(11)  UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
  `reference` varchar(50),
  `name` varchar(100),
  `createdAt` datetime NOT NULL,
  `updatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
  );
4 được gọi một lần để thực thi tập lệnh SQL tạo cơ sở dữ liệu và tạo bảng cơ sở dữ liệu

Nếu bạn muốn thực hiện phương pháp này, hãy tạo

CREATE TABLE `Family` (
  `id` int(11)  UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
  `reference` varchar(50),
  `name` varchar(100),
  `createdAt` datetime NOT NULL,
  `updatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
  );
5 rồi sao chép đoạn mã sau cộng với câu lệnh SQL CREATE trước đó để tạo bảng

CREATE DATABASE mydb;

use mydb;

/* COPY THE PREVIOUS STATEMENTS HERE*/

Bây giờ chúng ta cần thực thi tập lệnh này từ PHP 7. Vì vậy, hãy tiếp tục và tạo một tệp

CREATE TABLE `Family` (
  `id` int(11)  UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
  `reference` varchar(50),
  `name` varchar(100),
  `createdAt` datetime NOT NULL,
  `updatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
  );
6 sau đó sao chép đoạn mã sau

include_once './dbclass.php';
try 
{
  $dbclass = new DBClass(); 
  $connection = $dbclass.getConnection();
  $sql = file_get_contents("data/database.sql"); 
  $connection->exec($sql);
  echo "Database and tables created successfully!";
}
catch(PDOException $e)
{
    echo $e->getMessage();
}

Chúng ta sẽ đặt nội dung của tệp

CREATE TABLE `Family` (
  `id` int(11)  UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
  `reference` varchar(50),
  `name` varchar(100),
  `createdAt` datetime NOT NULL,
  `updatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
  );
5 vào một biến bằng cách sử dụng hàm filegetcontents() và thực thi nó bằng hàm exec()

Bạn có thể xem việc triển khai DBClass bên dưới

Cấu trúc tệp dự án API của chúng tôi sẽ đơn giản. Chúng tôi sẽ sử dụng thư mục

CREATE TABLE `Family` (
  `id` int(11)  UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
  `reference` varchar(50),
  `name` varchar(100),
  `createdAt` datetime NOT NULL,
  `updatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
  );
8 để lưu trữ (các) tệp cấu hình, thư mục
CREATE TABLE `Family` (
  `id` int(11)  UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
  `reference` varchar(50),
  `name` varchar(100),
  `createdAt` datetime NOT NULL,
  `updatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
  );
9 để lưu trữ các lớp PHP đóng gói các thực thể được sử dụng bởi API của chúng tôi. sản phẩm điện tử, địa điểm, gia đình và giao dịch

Bên trong thư mục

CREATE TABLE `Family` (
  `id` int(11)  UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
  `reference` varchar(50),
  `name` varchar(100),
  `createdAt` datetime NOT NULL,
  `updatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
  );
8, thêm tệp
CREATE TABLE `Transaction` (
  `id` int(11)  UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
  `comment` text,
  `price` float,
  `quantity` float,
  `reason` enum('New Stock','Usable Return','Unusable Return'),
  `createdAt` datetime NOT NULL,
  `updatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `productid` int(11) NOT NULL
);
1 chứa mã sau để kết nối phụ trợ API của bạn với cơ sở dữ liệu MySQL bên dưới

";
    private $database = "";

    public $connection;

    // get the database connection
    public function getConnection(){

        $this->connection = null;

        try{
            $this->connection = new PDO("mysql:host=" . $this->host . ";dbname=" . $this->database, $this->username, $this->password);
            $this->connection->exec("set names utf8");
        }catch(PDOException $exception){
            echo "Error: " . $exception->getMessage();
        }

        return $this->connection;
    }
}
?>

Tiện ích mở rộng Đối tượng dữ liệu PHP (PDO) xác định giao diện nhẹ, nhất quán để truy cập cơ sở dữ liệu trong PHP. Mỗi trình điều khiển cơ sở dữ liệu triển khai giao diện PDO có thể hiển thị các tính năng dành riêng cho cơ sở dữ liệu dưới dạng các chức năng mở rộng thông thường. Lưu ý rằng bạn không thể tự thực hiện bất kỳ chức năng cơ sở dữ liệu nào bằng tiện ích mở rộng PDO; . Nguồn

Đối tượng PDO sẽ yêu cầu bốn tham số

DSN (tên nguồn dữ liệu), bao gồm loại cơ sở dữ liệu, tên máy chủ, tên cơ sở dữ liệu (tùy chọn) Tên người dùng để kết nối với máy chủ Mật khẩu để kết nối với máy chủ Tùy chọn bổ sung

Tiếp theo, chúng ta sẽ tạo các lớp PHP đóng gói các thực thể (hoặc bảng cơ sở dữ liệu). Mỗi lớp sẽ chứa một chuỗi mã hóa cứng lưu trữ tên của bảng SQL tương ứng, một biến thành viên sẽ chứa một thể hiện của lớp Kết nối sẽ được truyền qua hàm tạo của lớp và các trường khác ánh xạ tới các cột của bảng. Mỗi lớp thực thể cũng sẽ đóng gói các thao tác CRUD cần thiết để tạo, đọc, cập nhật và xóa các hàng trong bảng tương ứng

connection = $connection;
    }

    //C
    public function create(){
    }
    //R
    public function read(){
        $query = "SELECT c.name as family_name, p.id, p.sku, p.barcode, p.name, p.price, p.unit, p.quantity , p.minquantity, p.createdAt, p.updatedAt FROM" . $this->table_name . " p LEFT JOIN Family c ON p.family_id = c.id ORDER BY p.createdAt DESC";

        $stmt = $this->connection->prepare($query);

        $stmt->execute();

        return $stmt;
    }
    //U
    public function update(){}
    //D
    public function delete(){}
}

connection = $connection;
    }
    //C
    public function create(){}
    //R
    public function read(){}
    //U
    public function update(){}
    //D
    public function delete(){}    
}

connection = $connection;
    }
    //C
    public function create(){}
    //R
    public function read(){}
    //U
    public function update(){}
    //D
    public function delete(){}    
}

connection = $connection;
    }
    //C
    public function create(){}
    //R
    public function read(){}
    //U
    public function update(){}
    //D
    public function delete(){}    
}

Chúng tôi có bốn thực thể mà chúng tôi muốn CRUD với API của mình, vì vậy hãy tạo bốn thư mục

CREATE TABLE `Transaction` (
  `id` int(11)  UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
  `comment` text,
  `price` float,
  `quantity` float,
  `reason` enum('New Stock','Usable Return','Unusable Return'),
  `createdAt` datetime NOT NULL,
  `updatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `productid` int(11) NOT NULL
);
2,
CREATE TABLE `Transaction` (
  `id` int(11)  UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
  `comment` text,
  `price` float,
  `quantity` float,
  `reason` enum('New Stock','Usable Return','Unusable Return'),
  `createdAt` datetime NOT NULL,
  `updatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `productid` int(11) NOT NULL
);
3,
CREATE TABLE `Transaction` (
  `id` int(11)  UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
  `comment` text,
  `price` float,
  `quantity` float,
  `reason` enum('New Stock','Usable Return','Unusable Return'),
  `createdAt` datetime NOT NULL,
  `updatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `productid` int(11) NOT NULL
);
4 và
CREATE TABLE `Transaction` (
  `id` int(11)  UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
  `comment` text,
  `price` float,
  `quantity` float,
  `reason` enum('New Stock','Usable Return','Unusable Return'),
  `createdAt` datetime NOT NULL,
  `updatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `productid` int(11) NOT NULL
);
5, sau đó trong mỗi thư mục, hãy tạo
CREATE TABLE `Transaction` (
  `id` int(11)  UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
  `comment` text,
  `price` float,
  `quantity` float,
  `reason` enum('New Stock','Usable Return','Unusable Return'),
  `createdAt` datetime NOT NULL,
  `updatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `productid` int(11) NOT NULL
);
6,
CREATE TABLE `Transaction` (
  `id` int(11)  UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
  `comment` text,
  `price` float,
  `quantity` float,
  `reason` enum('New Stock','Usable Return','Unusable Return'),
  `createdAt` datetime NOT NULL,
  `updatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `productid` int(11) NOT NULL
);
7,
CREATE TABLE `Transaction` (
  `id` int(11)  UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
  `comment` text,
  `price` float,
  `quantity` float,
  `reason` enum('New Stock','Usable Return','Unusable Return'),
  `createdAt` datetime NOT NULL,
  `updatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `productid` int(11) NOT NULL
);
8,
CREATE TABLE `Transaction` (
  `id` int(11)  UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
  `comment` text,
  `price` float,
  `quantity` float,
  `reason` enum('New Stock','Usable Return','Unusable Return'),
  `createdAt` datetime NOT NULL,
  `updatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `productid` int(11) NOT NULL
);
9

Ví dụ về HTTP POST API. Triển khai/tạo sản phẩm. php Mở tệp

CREATE TABLE `Location` (
  `id` int(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
  `reference` varchar(50),
  `description` text,
  `createdAt` datetime NOT NULL,
  `updatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
);
0 sau đó thêm đoạn mã sau

CRUD trong PHP là gì?

Từ viết tắt CRUD dùng để chỉ tất cả các chức năng chính được triển khai trong các ứng dụng cơ sở dữ liệu quan hệ - tạo, đọc, cập nhật và xóa .

Làm cách nào để sử dụng PHP CRUD API?

REST API CRUD sử dụng PHP .
Triển khai tạo và cập nhật API REST. Các yêu cầu TẠO và CẬP NHẬT được gửi cùng với các giá trị đã đăng. .
Xóa bằng API REST. URL yêu cầu XÓA sẽ giống với URL CHỈNH SỬA. .
Lớp miền được sử dụng cho ví dụ CRUD này

API hoạt động CRUD là gì?

CRUD là viết tắt của " Tạo, Đọc, Cập nhật và Xóa ," là bốn thao tác cơ sở dữ liệu cơ bản. Nhiều dịch vụ HTTP cũng mô hình hóa các hoạt động CRUD thông qua REST hoặc các API giống như REST. Trong hướng dẫn này, bạn sẽ xây dựng một API web rất đơn giản để quản lý danh sách sản phẩm.

API trong PHP là gì?

Giao diện lập trình ứng dụng hoặc API, xác định các lớp, phương thức, hàm và biến mà ứng dụng của bạn sẽ cần gọi để thực hiện tác vụ mong muốn. Trong trường hợp các ứng dụng PHP cần giao tiếp với cơ sở dữ liệu, các API cần thiết thường được hiển thị thông qua các tiện ích mở rộng PHP.