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

API Validation – Kiểm tra và bảo vệ dữ liệu đầu vào

1. API Validation là gì? API Validation là quá trình kiểm tra dữ liệu mà Client gửi lên API có đúng định dạng, đúng kiểu dữ liệu và hợp lệ theo business rule hay không trước khi xử lý. Ví dụ Client gửi: { “name”: “”, “age”: -5, “email”: “abc” } API cần kiểm tra: […]

JSON & HTTP Status Codes – Nền tảng quan trọng khi làm REST API

JSON & HTTP Status Codes – Nền tảng quan trọng khi làm REST API khi là việc với REST API client và server cần hai thứ quan trọng: JSON để trao đổi dữ liệu HTTP Status Codes là hiển thị trạng thái có biết request đã xảy ra chuyện gì 1. JSON là gì? JSON […]

Series 1 — Web Fundamentals: Internet – Http/Https

Series 1 — Web Fundamentals Internet → HTTP/HTTPS → DNS → Browser   Bài 1 – Internet Fundamentals   Khi bắt đầu học Frontend, chúng ta thường tập trung vào HTML, CSS và JavaScript. Tuy nhiên, trước khi tìm hiểu cách xây dựng một website, có một câu hỏi cơ bản mà bất kỳ Frontend […]

HTTP & HTTPS – Nền tảng giao tiếp trên Web

HTTP & HTTPS – Nền tảng giao tiếp trên Web Khi làm web hoặc backend, có một thứ gần như xuất hiện ở mọi nơi nhưng rất dễ bị xem là hiển nhiên: HTTP. Mỗi khi mở một website, gọi một API, đăng nhập, gửi form hay tải một file, client và server đều cần […]

Return First

Return First – Tư duy xử lý điều kiện trong code Khi bắt đầu làm việc với code thực tế, chúng ta sẽ thường gặp những function chứa rất nhiều điều kiện. Ban đầu, việc sử dụng if/else để xử lý từng trường hợp là hoàn toàn bình thường. Tuy nhiên, khi logic ngày càng […]

SOLID

SOLID – 5 nguyên tắc giúp thiết kế code tốt hơn SOLID là 5 nguyên tắc thiết kế trong lập trình hướng đối tượng (OOP), giúp code dễ đọc, dễ thay đổi, dễ mở rộng và dễ bảo trì. SOLID không phải framework hay tool mà là tư duy thiết kế code. Nó giúp hạn […]

Leave a Reply

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