Kinh nghiệm lập trình website mã nguồn mở PHP

Thay thế REST bằng GraphQL trong Magento 2.3

Hiện tại hệ thống API trong Magento 2 rất đa dạng, hỗ trợ bao gốm cả REST và SOAP. Trong tương lai từ phiên bản Magento 2.3 sẽ thay thế REST và SOAP bằng một công nghệ mới – GraphQL. Vậy GraphQL là gì, hoạt động ra sao? Bài viết này sẽ giới thiệu đến các bạn chủ đề GraphQL trong Magento 2.3.

GraphQL cơ bản

GraphQL trong Magento
GraphQL là 1 ngôn ngữ truy vấn dành cho API. Điểm khác biệt của GraphQL đã hiện rõ ngay tên gọi của nó, vì nó là ngôn ngữ truy vấn (QL = query language) nên thay vì gọi 1 endpoint và nhận được toàn bộ data trả về như API truyền thống, GraphQL sẽ gửi tới server yêu cầu những data mong muốn và nhận được tương ứng. Ví dụ:
REST: bạn gọi tới các endpoint để lấy data:

/rest/V1/customers
/rest/V1/products

Mỗi endpoint này đã định nghĩa sẵn các data trả về nên dù dư hay thiếu gì ta cũng phải chấp nhận. Đây giống như cơm tiệm bình dân, người bán phải mất công phục vụ mỗi người khách khác nhau, khách thì nhận được phần ăn nhiều khi không đúng với ý muốn.

GraphQL: bạn gọi tới duy nhất 1 endpoint và gửi kèm những data bạn cần lấy:

/graphql

{
    products (search: "Yoga pants") {
        name,
        sku,
        price
    }
}

Đây như ăn buffet, các món đầy đủ, bạn cần ăn món nào, số lượng ra sao là do bạn quyết định. Người bán cũng phẻ mà người mua cũng tiện.

Còn Graph trong GraphQL ý nghĩa biểu đồ, đồ thị. Ngay cả biểu tượng của nó của mang hàm ý các node được liên kết với nhau. Tức là khi bạn truy vấn 1 order data, bạn có thể truy vấn tiếp các customer, product có mối quan hệ với order đó mà không mất công gọi thêm các request khác như API kiễu truyền thống.
Để làm điều này, khi định nghĩa ra các Schemas cho GraphQL, người ta sẽ định nghĩa luôn các mối quan hệ của chúng:
Thay thế REST bằng GraphQL trong Magento 2.3

Vậy là bạn vừa nắm được khái niệm cơ bản về GraphQL mà còn hiểu được luôn ý nghĩa cấu thành tên gọi của nó:
– Truy vấn data response linh động, gọn nhẹ (-QL)
– Biểu diễn được các mối quan hệ dữ liệu dưới dạng đồ thị (Graph-)

GraphQL và REST

Cùng đánh giá 2 công nghệ này qua các đặc điểm sau:

RESTGraphQL
– Với yêu cầu phức tạp, ta phải khởi tạo nhiều request cùng lúc để có thể lấy hết lượng data mong muốn hiển thị.
– Công sức thiết kế API lớn, logic trở nên phức tạp và phình to nhanh chóng khi một API phục vụ cho nhiều application khác nhau.
– Tất cả data mong muốn có thể gộp chung vào một truy vấn, tới một endpoint duy nhất
– Với phương pháp duyệt cây, mỗi data node chỉ cần duyệt qua một lần duy nhất là đã có thể dùng cho mọi nơi trong data set, không phụ thuộc vào độ phức tạp của format dữ liệu.

Tương lai của GraphQL trong Magento

Theo Magento 2 Roadmap (nguồn tin mật đáng tin cậy) thì GraphQL trong Magento 2.3 sẽ lên sóng trong năm 2018.
Hiện tại bạn nào dân Hà Nội có thể vào github để download source 2.3 về xem trước.
Còn bạn nào không vội thì có thể đọc sơ qua tài liệu của Magento:
http://devdocs.magento.com/guides/v2.3/graphql/
http://devdocs.magento.com/guides/v2.3/graphql/search-pagination.html
NamLuu.com sẽ có update mới nhất về GraphQL ngay khi tải được magento 2.3, các bạn đón chờ xem nhé.

Thay thế REST bằng GraphQL trong Magento 2.3
Đánh giá bài viết

Gửi phản hồi

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