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 JSONAPI 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 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
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ệuNế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ảngCREATE 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ã sauinclude_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ịchBê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
);
9Ví 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. |