REST API – Cách thiết kế và xây dựng API theo REST

khi chúng ta xậy dựng một website để mà frontend có thể giao tiếp được với backend đó chính là API.

Ví dụ:

Frontend
   ↓
GET /users // đây là API
   ↓
Backend
   ↓
Database

Frontend có thể gửi request để lấy danh sách user, tạo user mới, cập nhật user hoặc xóa user.

Một trong những cách phổ biến nhất để xây dựng các API giao tiếp như vậy là REST API.

REST API không phải là một framework hay một thư viện. Nó là cách thiết kế API dựa trên các nguyên tắc của REST và tận dụng HTTP để client và server giao tiếp với nhau.

1. REST là gì?

REST là viết tắt của Representational State Transfer

REST dựa nhiều vào những đặc điểm vốn có của HTTP như:

  • URL
  • HTTP Methods
  • HTTP Status Codes
  • HTTP Headers
  • HTTP Request / Response

Ví dụ:

GET /users/123

Có thể hiểu đơn giản:

Client muốn lấy resource user có ID là 123.

2. REST API là gì?

REST API là API được thiết kế theo các nguyên tắc của REST.

Ví dụ một hệ thống quản lý user:

GET    /users
GET    /users/123
POST   /users
PUT    /users/123
PATCH  /users/123
DELETE /users/123

Các endpoint trên đại diện cho resource users.  HTTP Method cho biết client muốn thực hiện hành động gì.

một điểm cần lưu ý: REST không phải chỉ việc dùng GET, POST, PUT, DELETE là có thể gọi là RESTful API được.  REST còn liên quan đến cách chúng ta mô hình hóa resource, URL, trạng thái, statelessness, HTTP semantics và cách client/server tương tác.

3. Resource – Khái niệm quan trọng nhất trong REST

REST thường tư duy theo resource thay vì tư duy theo action.

Ví dụ hệ thống có:

User
Product
Order
Category
Comment

Đây có thể được xem là các resource.

Ví dụ:

/users
/products
/orders
/categories
/comments

Thay vì thiết kế API theo kiểu:

/getUsers
/createUser
/updateUser
/deleteUser

REST thường sử dụng:

GET    /users
POST   /users
PUT    /users/123
DELETE /users/123

Ở đây:

/users

là resource.

Còn:

GET
POST
PUT
DELETE

cho biết client muốn làm gì với resource đó.

4. HTTP Methods trong REST API

REST API tận dụng HTTP Methods để thể hiện ý định của requestGET

GET

Dùng để lấy dữ liệu.

GET /users

Lấy danh sách user.

GET /users/123

Lấy user có ID 123.

GET thường không dùng để thay đổi dữ liệu trên server.

5. CRUD và REST API

REST API thường được dùng để thực hiện CRUD.

CRUD gồm:

Create
Read
Update
Delete
các CURD sẽ tương ứng với các REST API:
Create --> POST
Read all --> GET
Read One --> GET ( tương ứng lấy cái gì đó cụ thể)
Update --> PUSH/PATCH ( cập nhật toàn bộ hoặc một phần của resource)
delete --> DELETE ( xóa một resource nào đó)

6. Response trong REST API

Server trả về HTTP response.

Response thường gồm:

Response
├── Status Code
├── Headers
└── Body
Status code: là trạng thái trả về ( ví dụ 200 là thành công)
Headers:là id của respone
Body: phần nội dung trả về

Ví dụ:

HTTP/1.1 200 OK
Content-Type: application/json
{
  "id": 123,
  "name": "An",
  "email": "[email protected]"
}

7. Tóm lại

REST API là một cách thiết kế API dựa trên architectural style REST và sử dụng các đặc tính của HTTP để client và server giao tiếp với nhau.

Bài viết khác

Series 7 — Web Quality – Engineering :Testing – Unit Testing, Integration Testing, Web Performance – Core Web Vitals, Code Splitting, Lazy Loading

Series 7 — Web Quality – Engineering Bài 3: Testing – Unit Testing, Integration Testing và End-to-End Testing trong ứng dụng web 1. Vì sao ứng dụng web cần Testing? Trong quá trình phát triển Frontend, chúng ta thường kiểm tra ứng dụng bằng cách chạy website trên trình duyệt, nhấn vào các nút, nhập […]

Series 7 — Web Quality – Engineering : Authentication & Authorization

Series 7 — Web Quality – Engineering Bài 1: Authentication & Authorization – Xác thực và phân quyền trong ứng dụng web 1. Mở đầu Khi xây dựng một ứng dụng web có chức năng đăng nhập, chúng ta thường nghĩ rằng chỉ cần tạo biểu mẫu nhập email, mật khẩu và kiểm tra thông […]

Series 6 – Next.js Advanced – Production: Next.js Build & Deployment

Series 6 – Next.js Advanced & Production Bài 5: Next.js Build & Deployment – Từ mã nguồn đến môi trường Production 1. Mở đầu Trong quá trình phát triển một ứng dụng web, việc chạy thành công trên máy tính cá nhân chưa có nghĩa là ứng dụng đã sẵn sàng để đưa đến người […]

Series 6 – Next.js Advanced – Production: Next.js Internationalized Routing Next.js Static Export

Series 6 – Next.js Advanced & Production   Bài 3: Next.js Internationalized Routing – Tổ chức URL cho website đa ngôn ngữ 1. Mở đầu Sau khi xây dựng cơ chế dịch nội dung và định dạng theo locale, ứng dụng cần một cách để người dùng truy cập đúng phiên bản ngôn ngữ. Ví […]

Series 6 – Next.js Advanced & Production: Metadata & SEO, Internationalization (i18n) & Localization (l10n)

Series 6 – Next.js Advanced & Production Bài 1: Metadata & SEO trong Next.js – Tối ưu thông tin và khả năng hiển thị trên công cụ tìm kiếm 1. Mở đầu Khi xây dựng một website, việc hoàn thiện giao diện và chức năng mới chỉ là một phần của quá trình phát triển. […]

Series 5 – Next.js Fundamentals: CSR, SSR, SSG, ISR và cách lựa chọn

Series 5 – Next.js Fundamentals   Bài 7 : CSR, SSR, SSG và ISR – Các chiến lược Rendering trong Next.js 1. Mở đầu Khi xây dựng một website bằng React, chúng ta thường tập trung vào việc tạo component, quản lý state và hiển thị giao diện trên trình duyệt. Tuy nhiên, khi ứng dụng […]

Leave a Reply

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