- Blog
- Tin tức
29/07/2021 01:36
RE presentational S tate T ransfer (REST) là một kiến trúc phần mềm phong cách định nghĩa một tập các ràng buộc được sử dụng để tạo Web Services. REST API trong PHP là một trong những trụ cột của sự phát triển web hiện đại. Hầu hết các ứng dụng web ngày nay được phát triển dưới dạng các ứng dụng một trang trên giao diện người dùng, được kết nối với các API phụ trợ được viết bằng các ngôn ngữ khác nhau. Có nhiều framework PHP khác nhau có thể giúp bạn xây dựng REST API trong vài phút. Tuy nhiên, chúng ta hãy tìm hiểu cách xây dựng một REST API đơn giản trong lõi PHP (PHP core) qua bài viết dưới đây.
Điều kiện tiên quyết để tạo REST API trong PHP
- PHP
- MySQL
- Composer
- Postman
Bộ khung của REST API trong PHP
Tạo một thư mục /src và một tệp composer.json trong thư trên cùng với một phần phụ thuộc: thư viện DotEnv, cho phép lưu trữ thông tin trong tệp .env.
composer.json { "require": { "vlucas/phpdotenv": "^2.4" }, "autoload": { "psr-4": { "Src\\": "src/" } } }Trình tải tự động PSR-4 sẽ tự động tìm kiếm các lớp PHP trong thư mục /src.
Đây là lúc cài đặt các phụ thuộc:
composer installNó sẽ tạo một thư mục /vendor và phần phụ thuộc DotEnv sẽ được cài đặt (autoloader sẽ tải các lớp từ /src mà không cần hàm gọi include()).
Tạo tệp .gitignore cho dự án của bạn với hai dòng trong đó, vì vậy thư mục /vendor và tệp cục bộ .env sẽ bị bỏ qua:
.gitignore vendor/ .envTiếp theo, tạo một tệp .env.example cho các biến Secret (Bí mật):
.env.example DB_HOST=localhost DB_PORT=3306 DB_DATABASE= DB_USERNAME= DB_PASSWORD=Và một tệp .env nơi bạn sẽ điền thông tin chi tiết thực của mình sau này (nó sẽ bị Git bỏ qua nên sẽ không kết thúc trong kho lưu trữ của bạn).
Tạo một tệp tải start.php các biến môi trường.
start.php <?php require 'vendor/autoload.php'; use Dotenv\Dotenv; use Src\Database; $dotenv = new DotEnv(__DIR__); $dotenv->load(); // test code: // it will output: localhost // when you run $ php start.php echo getenv('DB_HOST');>>> Đọc thêm: Date time trong PHP- Cách xử lý date time trong PHP nhanh nhấtDate time trong PHP - Cách xử lý date time trong PHP nhanh nhất
Định hình Cơ sở dữ liệu cho REST API trong PHP
Chúng ta sẽ sử dụng MySQL để cấp nguồn cho API đơn giản của chúng tôi.
Tạo cơ sở dữ liệu và người dùng mới cho ứng dụng của bạn:
mysql -u root -p CREATE DATABASE blog CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'rest_api_user'@'localhost' identified by 'rest_api_password'; GRANT ALL on blog.* to 'rest_api_user'@'localhost'; quitREST API sẽ chứa bài viết cho chúng ta trong ứng dụng Blog, với các lĩnh vực sau: id, title, body, author, author_picture, created_at. Nó cho phép người dùng đăng blog của họ trên ứng dụng Blog của chúng ta.
Tạo bảng cơ sở dữ liệu trong MySQL.
mysql -u rest_api_user -p; // Enter your password use blog; CREATE TABLE `post` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(255) NOT NULL, `body` text NOT NULL, `author` varchar(255), `author_picture` varchar(255), `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`) );Thêm các biến kết nối cơ sở dữ liệu vào tệp .env của bạn :
.env DB_HOST=localhost DB_PORT=3306 DB_DATABASE=blog DB_USERNAME=rest_api_user DB_PASSWORD=rest_api_passwordTạo một lớp để giữ database và thêm phần khởi tạo kết nối vào tệ start.php
src/Database.php class Database { private $dbConnection = null; public function __construct() { $host = getenv('DB_HOST'); $port = getenv('DB_PORT'); $db = getenv('DB_DATABASE'); $user = getenv('DB_USERNAME'); $pass = getenv('DB_PASSWORD'); try { $this->dbConnection = new \PDO( "mysql:host=$host;port=$port;dbname=$db", $user, $pass ); } catch (\PDOException $e) { exit($e->getMessage()); } } public function connet() { return $this->dbConnection; } } start.php <?php require 'vendor/autoload.php'; use Dotenv\Dotenv; use Src\Database; $dotenv = new DotEnv(__DIR__); $dotenv->load(); $dbConnection = (new Database())->connet();>>> Đọc thêm:Hằng số trong PHP- Tìm hiểu nhanh về hằng số trong PHP Hằng số trong PHP - Tìm hiểu nhanh về hằng số trong PHP
Thêm lớp cho Post Table và triển khai REST API trong PHP
Có nhiều cách để tương tác với cơ sở dữ liệu trong ngữ cảnh hướng đối tượng, nhưng chúng ta sẽ tìm hiểu một phương pháp đơn giản nhất, nơi bạn sẽ triển khai các phương thức để trả về tất cả các bài đăng, trả về một bài đăng cụ thể và thêm / cập nhật / xóa bài đăng.
Ngoài ra, các điểm cuối API sẽ được xử lý bởi giao diện người dùng của chúng ta tại api/index.php.
REST API với các điểm cuối như sau:
API | CRUD | Mô tả |
GET /posts | READ | Nhận tất cả các bài viết từ bảng postpost |
GET /post/{id} | READ | Nhận tất cả các bài viết từ bảng postpost |
GET /post/{id} | Nhận một bài đăng từ bảng post | POST /postbảng Post |
CREATE | Tạo bài đăng và chèn vào bảng Post | PUT /post/{id} |
UPDATE | Cập nhât bài đăng trong bảng post | DELETE /post/{id} |
DELATE
xóa bài đăng khỏi bảng postKhóa học lập trình PHP
Kiểm tra các điểm cuối API bằng Postman