Phân biệt giữa RestAPI và GraphAPI

Phân biệt RestAPI và GraphAPI

 Rest là gì?

Những khái niệm đầu tiên về REST(REpresentational State Transfer) được đưa ra vào năm 2000 trong luận văn tiến sĩ của Roy Thomas Fielding (đồng sáng lập giao thức HTTP). Trong luận văn ông giới thiệu khá chi tiết về các ràng buộc, quy ước cũng như cách thức thực hiện với hệ thống để có được một hệ thống REST.

Hiểu đơn giản nó là một bộ các ràng buộc và quy ước , khi áp dụng đầy đủ vào hệ thống của bạn thì ta có 1 hệ thống REST.

REST Contraints

  • Hệ thống hoạt động theo mô hình client-server, trong đó server là tập hợp các service nhỏ lắng nghe các request từ client. Với từng request khác nhau thì có thể một hoặc nhiều service xử lý.
  • Stateless (phi trạng thái). Đơn giản server và client không lưu trạng thái của nhau -> mỗi request lên server thì client phải đóng gói thông tin đầy đủ để thằng server hiểu được. Điều này giúp hệ thống của bạn dễ phát triển,bảo trì, mở rộng vì không cần tốn công CRUD trạng thái của client . Hệ thống phát triển theo hướng này có ưu điểm nhưng cũng có khuyết điểm là gia tăng lượng thông tin cần truyền tải giữa client và server.
  • Khả năng caching : Các response có thể lấy ra từ cache. Bằng cách cache các response , server giảm tải việc xử lý request, còn client cũng nhận được thông tin nhanh hơn. Ở đây ta đặt 1 thằng cache vào giữa : client- cache- server.
  • Chuẩn hóa các interface : Đây là một trong những đặc tính quan trọng của hệ thống REST. Bằng cách tạo ra các quy ước chuẩn để giao tiếp giữa các thành phần trong hệ thống, bạn đã đơn giản hóa việc client có thể tương tác với server. Các quy ước này áp dụng cho toàn bộ các service giúp cho người sử dụng hệ thống của bạn dễ dụng hơn. Dễ hiểu hơn trên hệ thống bạn đặt ra 1 chuẩn API để người dùng dù là mobile, web đều có thể kết nối vào được. Hệ thống REST có yếu điểm ở đây vì khi chuẩn hóa rồi ta không thế tối ưu từng kết nối.-
  • Phân lớp hệ thống : trong hệ thống REST bạn chia tách các thành phần hệ thống theo từng lớp, mỗi lớp chỉ sử dụng lớp ở dưới nó và giao tiếp với lớp ở ngay trên nó mà thôi. Điều này giúp bạn giảm độ phức tạp của hệ thống,giúp các thành phần tách biệt nhau từ đó dễ dàng mở rộng từng thành phần

Graph là gì?

Đầu tiên theo nghỉa tiếng việt Graph gọi là đồ thị. Mà đồ thị thì phải biểu diễn bằng hình vẽ và mục đích chính mà Graph ra đời là biểu thị mối quan hệ giữa các thực thể (Object/Entity).

Tưởng mỗi người chúng ta là một thực thể (Object) – giống như cách mà các bác hình dung ở OOP. Cuộc sống thì phức tạp, các bác không thể không quen biết, không liên hệ, không kết nối với ai được, do đó Graph sinh ra để miêu tả mối quan hệ giữa các thực thể (Object). VD có Bác (Object A) và ông già của bác (Object B) cả 2 liên hệ với nhau qua sợi dây (cha – con) . Sau này bạn cưới 1 em về (Object C) thì quan hệ giữa Object A và Object C là vợ chồng , Obj B và Obj C là bố vợ – con dâu  Graph là sợi dây miêu tả mối quan hệ giữa các thành viên trong gia đình.

REST, để bắt đầu, không phải là một giao thức mà chỉ là một phong cách, mà nếu áp dụng chính xác, chỉ cần phân tách các máy khách từ máy chủ. Một máy chủ theo nguyên tắc REST sẽ cung cấp cho khách hàng bất kỳ thông tin cần thiết để thực hiện các bước tiếp theo. Một khách hàng ban đầu bắt đầu không có kiến ​​thức a-priori và học hỏi trực tiếp thông qua việc phát hành yêu cầu và xử lý phản hồi.

Trong khi REST là agnostic của giao thức, có nghĩa là nó có thể được xây dựng trên nhiều giao thức, HTTP có lẽ là một trong những đặc trưng nổi bật nhất. Một ví dụ phổ biến cho một khách hàng RESTful là trình duyệt Web mà tất cả chúng ta đều quen thuộc với. Nó sẽ bắt đầu bằng cách gọi hoặc là URI đã đánh dấu trang hoặc gọi một URL được nhập vào thanh địa chỉ và tiến lên từ đó.

HTTP không chỉ định đại diện yêu cầu hoặc phản hồi đã được gửi đi nhưng sẽ chuyển cho khách hàng và máy chủ đàm phán chúng. Điều này giúp tách ra khi cả máy khách lẫn máy chủ có thể dựa vào giao diện chung (HTTP) và chỉ liên kết chặt chẽ với các loại phương tiện đã biết được sử dụng để trao đổi dữ liệu. Một peer không thể xử lý một tài liệu trong một biểu thức nhất định (do thiếu sự hỗ trợ loại mime tương ứng) sẽ cho biết peer khác của mình thông qua một thông báo lỗi tương ứng. Loại phương tiện truyền thông, chỉ là tài liệu dễ đọc của con người về cú pháp và ngữ nghĩa của tải trọng dữ liệu, là một phần quan trọng nhất trong kiến ​​trúc REST. Nó dạy một peer làm thế nào để phân tích cú pháp và giải thích tải trọng nhận được và để thực sự có ý nghĩa ra khỏi nó,

GraphQL mặt khác là một ngôn ngữ truy vấn cung cấp cho khách hàng sức mạnh để yêu cầu các lĩnh vực cụ thể và các yếu tố nó muốn lấy từ máy chủ. Đó là, nói một cách lỏng lẻo, một số loại SQL cho Web. Vì vậy, nó phải có kiến ​​thức về các dữ liệu có sẵn trước đó mà cặp vợ chồng khách hàng bằng cách nào đó đến máy chủ. Nếu máy chủ sẽ đổi tên một số trường, khách hàng sẽ không thể lấy được loại thông tin đó nữa, mặc dù tôi không phải là chuyên gia GraphQL.

Như đã nêu ở trên, REST thường bị lẫn lộn với API HTTP dựa trên JSON cho phép thực hiện các truy vấn đối với các mục / thực thể DB được ánh xạ trực tiếp. Lưu ý rằng REST không cấm điều này, mặc dù tập trung vào việc tách các peers không phải là khía cạnh truy xuất của một số mục nhập cơ sở dữ liệu Web.

Phân biệt RestAPI và GraphAPI
4.1 (81.54%) 13 vote[s]

About the Author Trần Ngọc Linh

Yêu công nghệ, từng tham gia nghĩa vụ quân sự 2 năm.

by Movan
>