Trong thế giới phát triển web ngày nay, API đóng một vai trò vô cùng quan trọng. API cho phép các ứng dụng và dịch vụ khác nhau giao tiếp và trao đổi dữ liệu với nhau một cách dễ dàng. Với sự phổ biến ngày một lớn của WordPress, việc WordPress hỗ trợ API là điều tất yếu. Đó chính là lý do ra đời WordPress REST API.
1. Giới thiệu về WordPress REST API là gì?
WordPress REST API là một tính năng mới được giới thiệu trong phiên bản WordPress 4.7, cho phép trao đổi dữ liệu giữa WordPress và các ứng dụng khác thông qua giao thức HTTP và định dạng JSON.
REST (Representational State Transfer) là một kiến trúc để viết API dựa trên giao thức HTTP. REST API sử dụng các phương thức HTTP như GET, POST, PUT, DELETE để giao tiếp và truyền tải dữ liệu. Đây được coi là một trong những cách tiếp cận tốt nhất để xây dựng API.
WordPress REST API cung cấp một cách đơn giản và hiệu quả để truy cập và tương tác với nội dung WordPress. Thay vì dùng phương thức truyền thống là truy vấn trực tiếp vào cơ sở dữ liệu, REST API cho phép gửi và nhận dữ liệu dưới dạng JSON thông qua các yêu cầu HTTP. Đây là một tính năng cực kỳ hữu ích, mở ra nhiều cơ hội phát triển mới cho WordPress. Với REST API, các developer có thể dễ dàng xây dựng các plugin, theme và ứng dụng tích hợp với WordPress.
2. Chức năng của WordPress REST API
WordPress REST API cung cấp một số chức năng quan trọng:
Tương tác với dữ liệu WordPress
REST API cho phép truy xuất các dữ liệu khác nhau từ WordPress như bài viết, trang, phương tiện, slide, thông tin người dùng… Chỉ cần gửi một request HTTP tới địa chỉ endpoint tương ứng, bạn có thể lấy được dữ liệu mình cần dưới định dạng JSON. Không chỉ truy xuất dữ liệu, REST API còn hỗ trợ cả các thao tác CRUD với dữ liệu:
- Create – Tạo mới dữ liệu bằng cách gửi request POST
- Read – Đọc dữ liệu bằng request GET
- Update – Cập nhật dữ liệu bằng request PUT, PATCH
- Delete – Xóa dữ liệu bằng request DELETE
Như vậy, thông qua REST API bạn có thể điều khiển và thao tác với dữ liệu WordPress một cách dễ dàng.
Cung cấp khả năng truy cập từ bên ngoài
Một trong những lợi ích lớn nhất của REST API là nó cho phép các ứng dụng và dịch vụ bên ngoài tương tác với dữ liệu WordPress. Ví dụ, bạn có thể xây dựng một ứng dụng di động dùng WordPress làm nền tảng dữ liệu. Ứng dụng mobile sẽ gửi request tới API để lấy dữ liệu về hiển thị trên app. Hoặc tạo một Alexa skill hay Google Home app để điều khiển WordPress bằng giọng nói. REST API mở ra nhiều cơ hội để mở rộng phạm vi của WordPress, đem dữ liệu WordPress tới nhiều thiết bị và nền tảng khác.
Hỗ trợ phát triển plugin, theme và ứng dụng
Như đã nói, với REST API các developer có thể dễ dàng tích hợp các tính năng mới vào WordPress thông qua việc gọi API thay vì truy vấn trực tiếp database. Chẳng hạn, một plugin hiển thị thông tin điểm du lịch có thể dùng REST API để lấy dữ liệu về các bài viết thay vì phải query trực tiếp bảng wp_posts. Hoặc một ứng dụng di động viết bài có thể dùng REST API để tạo bài viết mới trong WordPress.
Nhờ đó, việc phát triển các ứng dụng, plugin, theme cho WordPress trở nên dễ dàng và nhanh chóng hơn. REST API còn giúp tái sử dụng code và tăng tính bảo mật cho các ứng dụng.
Như vậy, WordPress REST API cung cấp nhiều lợi ích và mở ra nhiều cơ hội phát triển mới cho WordPress. Tiếp theo, chúng ta sẽ tìm hiểu các thành phần chính của REST API.
3. Các thành phần chính của WordPress REST API
Để hiểu rõ REST API hoạt động như thế nào, chúng ta cần tìm hiểu các khái niệm và thành phần chính sau:
Endpoints
Endpoint là điểm cuối để gửi request và nhận response từ REST API. Mỗi endpoint đại diện cho một tài nguyên (resource) cụ thể trong WordPress như bài viết, trang, người dùng… Một số endpoint phổ biến:
/wp/v2/posts
: bài viết/wp/v2/pages
: trang/wp/v2/users
: người dùng/wp/v2/tags
: thẻ/wp/v2/categories
: danh mục
URL đầy đủ của endpoint bao gồm domain của site cộng với đường dẫn tới endpoint. Ví dụ:
https://mysite.com/wp-json/wp/v2/posts
Các loại endpoints
Có 4 loại endpoints chính:
- GET: Lấy dữ liệu
- POST: Tạo dữ liệu mới
- PUT/PATCH: Cập nhật dữ liệu
- DELETE: Xóa dữ liệu
Mỗi loại endpoint sẽ được ánh xạ với một hoặc nhiều phương thức HTTP tương ứng:
Loại endpoint | Phương thức HTTP | Mô tả |
---|---|---|
GET | GET | Lấy dữ liệu |
POST | POST | Thêm dữ liệu mới |
PUT/PATCH | PUT, PATCH | Cập nhật dữ liệu |
DELETE | DELETE | Xóa dữ liệu |
Khi gọi tới endpoint, bạn sẽ dùng phương thức HTTP tương ứng để thực hiện thao tác CRUD với dữ liệu.
Parameters
Thông thường, khi gọi API bạn cần chỉ định thêm các tham số để lọc, sắp xếp, phân trang kết quả. REST API cũng cung cấp các parameters để giúp bạn làm điều đó. Một số parameters hay dùng:
_embed
: Nhúng thêm các object liên quan vào response._fields
: Chỉ lấy một số trường cụ thể._limit
: Giới hạn số lượng kết quả._page
: Phân trang kết quả._s
: Tìm kiếm theo từ khóa.
Các parameters được thêm vào cuối URL dưới dạng cặp key-value. Ví dụ:
GET /wp/v2/posts?_limit=5&_page=2
Sẽ lấy ra 5 bài viết ở trang 2.
Authentication
Để truy cập API, bạn cần xác thực để chứng minh mình có quyền truy cập hợp lệ. WordPress REST API hỗ trợ một số phương thức xác thực sau:
- Xác thực cookie: Sử dụng session cookie của người dùng đã đăng nhập WordPress.
- Basic auth: Sử dụng username và password. Thông tin xác thực sẽ được mã hóa base64 và đặt trong header Authorization của request.
- OAuth: Sử dụng OAuth token để xác thực. Cho phép cấp quyền truy cập dựa trên phạm vi và thời hạn.
- JSON Web Token (JWT): Token JWT được tạo với một secret, kèm thông tin người dùng và quyền hạn.
Ngoài ra còn một số phương thức xác thực khác ít phổ biến hơn. Tuỳ thuộc vào yêu cầu bảo mật và performance, bạn có thể chọn phương thức phù hợp nhất cho trường hợp của mình.
Schema
Schema định nghĩa cấu trúc dữ liệu của từng endpoint. Nó mô tả chi tiết các trường dữ liệu, kiểu dữ liệu và quan hệ giữa các object. Schema giúp API có cấu trúc rõ ràng, tăng khả năng tương tác và tính linh hoạt. Client có thể dựa vào schema để biết API trả về dữ liệu gì và truyền dữ liệu đúng định dạng lên server. Ví dụ schema của object Post:
{
"title": {
"type": "string",
"required": true
},
"content": {
"type": "string",
"required": true
},
"status": {
"type": "string",
"enum": ["publish", "draft"]
}
}
Như vậy, một số thành phần chính cần biết khi làm việc với REST API bao gồm: endpoint, parameters, authentication và schema. Tiếp theo chúng ta sẽ đi vào phần cốt lõi là cách gửi request và nhận response từ API.
4. Cách sử dụng WordPress REST API là gì?
Sau khi đã hiểu rõ các khái niệm và thành phần của REST API, bước tiếp theo là cách sử dụng nó trong thực tế. Dưới đây là một số cách phổ biến để tương tác với WordPress REST API.
Truy cập API thông qua URL
Cách đơn giản nhất là truy cập trực tiếp vào URL của endpoint. Ví dụ:https://yourdomain.com/wp-json/wp/v2/posts
Khi truy cập vào URL này, bạn sẽ nhận được JSON response chứa danh sách tất cả bài viết. Để xem chi tiết một bài viết cụ thể, truyền thêm ID bài viết vào cuối URL:https://yourdomain.com/wp-json/wp/v2/posts/123
Ngoài ra, bạn có thể thêm các query parameter vào URL để lọc, phân trang kết quả. Đây là cách đơn giản để truy vấn API thông qua URL. Tuy nhiên, để làm được nhiều hơn như đăng bài, xác thực người dùng… bạn cần dùng thêm các công cụ hỗ trợ.
Sử dụng các công cụ như Postman
Công cụ như Postman sẽ giúp bạn tương tác đầy đủ với API mà không cần code. Postman hỗ trợ:
- Xây dựng các request với đầy đủ headers, body, parameters.
- Gửi nhanh chóng các request GET, POST, PUT, DELETE.
- Xem response với status code, headers, body chi tiết.
- Thiết lập xác thực Basic Auth, OAuth để truy cập API.
- Tự động hóa test API bằng Collection Runner.
- Lưu lại API requests để sử dụng lại.
Ví dụ, để lấy danh sách 5 bài viết mới nhất, chúng ta thiết lập request như sau:
URL: https://yourdomain.com/wp-json/wp/v2/posts
Method: GET
Parameters: _limit=5
Authorization: Basic Auth (nhập username, password)
Chỉ với vài thao tác đơn giản là có ngay kết quả mong muốn:
<img src=”https://i.imgur.com/n5RiARK.png”>
Như vậy với Postman, bạn có thể dễ dàng test API mà không cần code. Điều này giúp tiết kiệm thời gian phát triển và debug.
Ví dụ thực tế: Tạo một request GET và POST
Để hiểu rõ hơn, chúng ta hãy xem ví dụ cụ thể việc gửi một request GET và POST đến API.
Request GET
Để lấy ra 5 bài viết mới nhất thuộc danh mục có ID là 15, ta sẽ gửi request:GET /wp/v2/posts?categories=15&per_page=5
Phân tích request:
- Endpoint:
/wp/v2/posts
để lấy danh sách bài viết. - Tham số
categories=15
để lọc theo danh mục. - Tham số
per_page=5
để giới hạn lấy 5 bài viết.
Kết quả trả về sẽ là một mảng JSON chứa 5 phần tử, mỗi phần tử là thông tin chi tiết của một bài viết.
Request POST
Để đăng một bài viết mới, ta gửi request:POST /wp/v2/posts
Với body là một JSON object chứa dữ liệu bài viết cần tạo:
{
"title": "REST API Post",
"content": "Content of new post",
"status": "publish"
}
Phân tích:
- Sử dụng method POST cho endpoint
/wp/v2/posts
. - Truyền dữ liệu bài viết cần tạo trong request body dạng JSON.
- Kết quả trả về sẽ là object JSON chứa thông tin bài viết vừa được tạo.
Như vậy chúng ta đã xem qua cách gửi request GET để lấy dữ liệu, và POST để tạo dữ liệu mới lên REST API.
Ứng dụng trong phát triển plugin và theme
REST API có nhiều ứng dụng trong phát triển plugin và theme cho WordPress. Ví dụ để lấy dữ liệu bài viết trong plugin thay vì truy vấn database, bạn có thể gọi:
$posts = wp_remote_get( rest_url('wp/v2/posts') );
Để submit form comment mà không cần tải lại trang, JavaScript có thể gọi:
fetch('/wp/v2/comments', {
method: 'POST',
body: commentData
});
Trong theme, lấy dữ liệu page cùng custom fields từ ACF:
$page = wp_remote_get( rest_url('wp/v2/pages/105?_fields=acf') );
Nhờ REST API mà các tác vụ trên được thực hiện đơn giản và dễ dàng hơn rất nhiều.