1. REST API là gì?

REST API là một cách thiết kế API giúp các ứng dụng giao tiếp và trao đổi dữ liệu với nhau thông qua Internet.

REST là viết tắt của Representational State Transfer, còn API là Application Programming Interface.

Hiểu đơn giản, REST API đóng vai trò như một cầu nối giữa Client và Server. Client gửi yêu cầu đến Server, Server xử lý yêu cầu rồi trả dữ liệu về cho Client.

REST API thường sử dụng HTTP hoặc HTTPS để truyền dữ liệu.
RESTful API: The Principles and Constraints | by Arianna Campesi | Medium

2. REST API hoạt động như thế nào?

Khi một ứng dụng muốn lấy hoặc thay đổi dữ liệu, Client sẽ gửi một HTTP Request đến một Endpoint của REST API.

Server nhận Request, xử lý dữ liệu và trả về HTTP Response.

Ví dụ một ứng dụng muốn lấy danh sách người dùng:

GET /users

Server nhận yêu cầu và trả về dữ liệu người dùng.

Ví dụ Response:

[
  {
    "id": 1,
    "name": "Nguyen Van A"
  }
]

Như vậy, Client không cần truy cập trực tiếp vào Database mà thông qua REST API để lấy dữ liệu.

Tìm Hiểu RESTful API và Các Tiêu Chuẩn Viết API Hiệu Quả

3. REST API sử dụng HTTP Method

REST API thường kết hợp với các HTTP Method để xác định Client muốn thực hiện hành động gì.

Một số Method phổ biến:

  • GET: lấy dữ liệu.
  • POST: tạo dữ liệu mới.
  • PUT: cập nhật toàn bộ dữ liệu.
  • PATCH: cập nhật một phần dữ liệu.
  • DELETE: xóa dữ liệu.

Ví dụ:

GET /users là Lấy danh sách người dùng.

GET /users/1 là Lấy thông tin người dùng có ID là 1.

POST /users là Tạo một người dùng mới.

PUT /users/1 là Cập nhật thông tin người dùng có ID là 1.

DELETE /users/1 là Xóa người dùng có ID là 1.

4. Endpoint là gì?

Endpoint là địa chỉ mà Client sử dụng để gửi Request đến REST API nhằm truy cập một tài nguyên hoặc thực hiện một chức năng nào đó.

Ví dụ:

GET /users

Trong đó:

  • GET là HTTP Method.
  • /users là Endpoint.
  • users đại diện cho tài nguyên người dùng.

Một API có thể có nhiều Endpoint khác nhau.

5. REST API trả dữ liệu như thế nào?

REST API thường trả dữ liệu dưới dạng JSON (JavaScript Object Notation) vì JSON có cấu trúc đơn giản và dễ sử dụng giữa các hệ thống khác nhau.

Ví dụ:

{
  "id": 1,
  "name": "Nguyen Van A",
  "email": "[email protected]"
}

Client nhận dữ liệu JSON từ Server rồi sử dụng dữ liệu đó để hiển thị lên giao diện hoặc tiếp tục xử lý.

Ví dụ trong ứng dụng mobile, App có thể gọi REST API để lấy danh sách sản phẩm. API lấy dữ liệu từ Database rồi trả JSON về App để hiển thị danh sách sản phẩm.

6. REST API và Database

REST API thường nằm ở giữa Client và Database.

Luồng xử lý có thể hiểu như sau:

1 Client  2 REST 3 API  4 Server  5 Database

Ví dụ người dùng mở danh sách sản phẩm:

  1. Client gửi GET /products.
  2. REST API nhận Request.
  3. Server xử lý yêu cầu.
  4. Server truy vấn Database.
  5. Database trả dữ liệu về Server.
  6. Server trả Response thông qua REST API.
  7. Client nhận dữ liệu và hiển thị sản phẩm.

Nhờ cách này, Client không cần biết Database được lưu trữ như thế nào và cũng không truy cập trực tiếp vào Database.

7. Ưu điểm và các khái niệm cần nhớ

REST API được sử dụng rất phổ biến vì cách thiết kế tương đối đơn giản, dễ mở rộng và có thể được sử dụng bởi nhiều loại Client khác nhau như Web, Mobile App, Desktop App hoặc hệ thống khác.

Một đặc điểm quan trọng của REST API là Stateless, nghĩa là mỗi Request nên chứa đầy đủ thông tin cần thiết để Server xử lý. Server không cần phụ thuộc vào trạng thái của Request trước đó.

REST API cũng thường kết hợp với Authentication và Authorization để kiểm soát người dùng. Ví dụ có thể sử dụng Token, JWT hoặc API Key để xác thực Request.

Dễ nhớ:

REST API = Cách để Client giao tiếp với Server thông qua HTTP/HTTPS.

GET = lấy

POST = tạo

PUT/PATCH = cập nhật

DELETE = xóa

Các thuật ngữ liên quan cần nhớ: REST, API, Client, Server, Endpoint, HTTP Method, Request, Response, JSON, Resource, Stateless, Authentication, Authorization, Token, JWT.

Bài viết khác

Test Automation(Kiểm thử tự động)

1.Test Automation (Kiểm thử tự động) là gì? Trong các dự án phát triển phần mềm truyền thống trước đây, toàn bộ quy trình kiểm thử (Testing) đều được thực hiện thủ công (Manual Testing) bởi con người. Các kiểm thử viên trực tiếp thao tác trên giao diện, nhập dữ liệu, kiểm tra kết […]

Logging – Monitoring – CI/CD

Logging, Monitoring và CI/CD là gì? Vai trò trong phát triển Backend 1. Tổng quan Khi xây dựng một ứng dụng Backend, viết code và chạy được chương trình mới chỉ là bước đầu. Khi ứng dụng được đưa vào sử dụng, lập trình viên còn cần biết ứng dụng đang hoạt động như thế […]

Redis & Caching là gì?

Redis & Caching là gì? Hướng dẫn sử dụng Redis trong Go 1. Caching là gì? Vì sao cần cache khi đã có database? Caching (bộ nhớ đệm) là kỹ thuật lưu tạm dữ liệu thường được truy cập để có thể lấy lại nhanh chóng khi cần, thay vì phải thực hiện lại toàn […]

Background Jobs & Queues

1. Background Jobs & Queues là gì? Trong một ứng dụng backend, không phải công việc nào cũng cần hoàn thành ngay trong lúc xử lý HTTP request. Ví dụ, khi người dùng đăng ký tài khoản, hệ thống có thể cần: Lưu thông tin người dùng vào database. Gửi email xác nhận. Gửi thông […]

Saga Pattern

Saga Pattern là gì? Quản lý Transaction trong kiến trúc Microservices 1. Saga Pattern là gì? Saga Pattern là một mẫu thiết kế được sử dụng để quản lý các nghiệp vụ phân tán gồm nhiều bước xử lý, trong đó mỗi bước có thể thực hiện một local transaction tại một service hoặc Database […]

Two-Phase Locking (2PL)

Two-Phase Locking (2PL) là gì? Cơ chế khóa hai pha trong Database 1. Two-Phase Locking (2PL) là gì? Two-Phase Locking (2PL — khóa hai pha) là một giao thức quản lý khóa trong Database, quy định cách một transaction được phép lấy và giải phóng lock trong quá trình thực thi. Khi nhiều transaction cùng […]

Leave a Reply

Your email address will not be published. Required fields are marked *