Ngừng sử dụng REST cho API

REST đã được nhiều lập trình viên sử dụng để gửi dữ liệu qua HTTP, trong khi GraphQL thường được biết đến như một công nghệ thay thế của API REST. Trong bài viết này, tôi sẽ giải thích những điểm lợi cũng như hạn chế và sự khác biệt giữa REST và GraphQL. Điều này sẽ giúp bạn quyết định nên chọn gì cho dự án tiếp theo của mình.

REST là gì?

REST (Representational state transfer) là một phương thức tạo API được sử dụng để triển khai các dịch vụ web bằng cách sử dụng một tập hợp các hoạt động không trạng thái được xác định trước (bao gồm GETPOSTPUT, và DELETE).

Ý tưởng cốt lõi của REST là bạn sẽ truy xuất tài nguyên bằng cách đưa qua một yêu cầu tới URL của tài nguyên và nhận được phản hồi (thường là JSON, nhưng nó phụ thuộc vào API).

Lợi thế của REST

Hạn chế của REST

GraphQL là gì?

GraphQL là một ngôn ngữ truy vấn dành cho API được tạo ra với mục đích nhắm tới những kiểu dữ liệu phức tạp, đa lớp với nhiều thành phần. GraphQL từ khi xuất hiện đã gần như thay thế hoàn toàn REST bởi tính hiệu quả, mạnh mẽ và linh hoạt hơn nhiều.

Lợi thế của GraphQL

Hạn chế của GraphQL

Ví dụ đơn giản để so sánh cả hai

Giả sử chúng ta cần phải hiển thị danh sách bài đăng của tác giả và những người theo dõi họ. Trong trường hợp này, chúng ta phải hiển thị tác giả của bài đăng, bài đăng cũng như những người đang theo dõi người dùng đó.

Nếu sử dụng REST, chúng ta sẽ cần ít nhất 2 hoặc 3 request, như thế này:

Nhưng trong tất cả những trường hợp này, chúng ta đang over-fetching dữ liệu. Ví dụ, trong request đầu tiên, chúng ta chỉ cần lấy tên, nhưng cái ta nhận được là tất cả các chi tiết về người dùng khi sử dụng cách này.

Và đây là lúc GraphQL cho thấy sức mạnh của nó. Chúng ta cần chỉ định truy vấn và nhận được đầu ra mong muốn. Chúng ta sẽ sử dụng một truy vấn như sau:

query {
  User(id: '123') {
    name
    posts {
      title
    }
    followers {
      name
    }
  }
}

Với truy vấn như này, ta sẽ nhận được JSON response với các thuộc tính sau. Gọn gàng và đơn giản, đúng không anh em

GraphQL và REST

Tóm lại, đây là một vài điểm khác biệt nổi bật:

1.Data fetching

2. Định nghĩa đối tượng (JSON response)

3. Bộ nhớ đệm tự động

4. Xử lý lỗi

Kết bài

GraphQL chắc chắn có nhiều lợi thế hơn REST, nhưng nó không phải lúc nào cũng là cách tốt nhất. Như tôi đã nói trước đó, sự lựa chọn phụ thuộc vào ứng dụng của bạn, cho dù chọn REST hay GraphQL.

Tôi hy vọng bài này có thể giúp bạn đưa ra quyết định trong các dự án tương lai. Nếu bạn muốn chia sẻ kinh nghiệm của mình về GraphQL hoặc REST, hãy để chúng trong phần bình luận. Cảm ơn các bạn đã đọc!