GraphQL là gì? Bắt đầu với GraphQL

Chào mọi người. Sau khi tìm hiểu về GraphQL, mình xin mạo muội chia sẻ chút kiến thức về nó cho mọi người cùng tiếp cận và cách sử dụng GraphQL như thế nào nhé.

1.1 Tổng quan

GraphQL là ngôn ngữ thao tác và truy vấn dữ liệu nguồn mở cho API, cung cấp cho shopper 1 cách thức dễ dàng để request chính xác những gì họ cần, giúp việc phát triển API dễ dàng hơn theo thời gian. GraphQL được Fb phát triển nội bộ vào năm 2012 trước khi phát hành công khai vào năm 2015.

GraphQL bao gồm 3 điểm đặc trưng bao gồm:

  • Cho phép shopper xác định chính xác những dữ liệu gì họ cần
  • GraphQL làm cho việc tổng hợp dữ liệu từ nhiều nguồn dễ dàng hơn
  • Sử dụng một kind system để khai báo dữ liệu.

GraphQL

1.2 Trả về chính xác những gì bạn gửi request

  • Khi bạn gửi 1 request GraphQL đến API của bạn, bạn sẽ nhận được chính xác những gì bạn yêu cầu trong request, không hơn không kém.
  • Các truy vấn GraphQL luôn trả về kết quả có thể dự đoán được.
  • Các ứng dụng sử dụng GraphQL rất nhanh và ổn định vì GraphQL kiểm soát dữ liệu mà nó nhận được chứ không phải máy chủ.
Có Thể Bạn Quan Tâm :   BitShares là gì? Tổng quan về đồng tiền ảo BitShare (BTS)

1.3 Nhận nhiều dữ liệu trong một request duy nhất

  • Các câu question GraphQL không chỉ có thể truy xuất các thuộc tính của một dữ liệu mà còn làm việc trơn tru với các đối tượng khác.
  • Trong khi các API REST chúng ta hay dùng phải yêu cầu request từ nhiều URL thì API GraphQL lại có thể lấy tất cả dữ liệu mà ứng dụng của bạn cần trong một request duy nhất.
  • Các ứng dụng sử dụng GraphQL có tốc độ xử lý rất nhanh ngay cả trên các kết nối chậm. Nhận nhiều dữ liệu trong 1 request duy nhất

1.4 Mô tả những gì có thể với một kind system

  • API GraphQL được tổ chức theo varieties và fields, truy cập toàn bộ dữ liệu của bạn từ một endpoint duy nhất.
  • GraphQL sử dụng các varieties để đảm bảo ứng dụng của bạn chỉ request những gì có thể, ngoài ra GraphQL còn giải thích các lỗi 1 cách rất dễ hiểu.
  • Ứng dụng của bạn có thể sử dụng các varieties để tránh viết code phân tích cú pháp thủ công. Mô tả những gì có thể với một type system

OK, như vậy sau 1 hồi đọc lý thuyết thì cũng cần phải có chút thực hành để rõ hơn các bạn nhỉ?

2.1 Chuẩn bị

Với GraphQL bạn có thể code bằng nhiều ngôn ngữ khác nhau, như: C# / .NET, Go, Java, PHP, Python, Ruby, Perl, … Các bạn có thể tham khảo code demo tại đây: https://graphql.org/code/

Có Thể Bạn Quan Tâm :   Giao thức AMQP là gì

Trong bài này mình dùng NodeJS 10.15.1 để demo.

2.2 Khởi tạo venture

Cách đơn giản nhất để chạy máy chủ API GraphQL là sử dụng module categorical (một khung ứng dụng internet phổ biến cho Node.js). Bạn sẽ cần cài đặt thêm 2 bundle express-graphql, graphql.

  • categorical: Chạy máy chủ internet và thực hiện truy vấn trực tiếp với hàm graphql
  • express-graphql: Gắn máy chủ API GraphQL trên endpoint HTTP /graphql
  • graphql: Package deal để sử dụng API GraphQL

Chạy command line:

npm init npm set up categorical express-graphql graphql -save

Hoặc tạo file bundle.json với nội dung:

{ “identify”: “graph_ql”, “model”: “1.0.0”, “description”: “”, “essential”: “index.js”, “scripts”: { “check”: “echo “Error: no check specified” && exit 1″ }, “creator”: “”, “license”: “ISC”, “dependencies”: { “categorical”: “^4.17.1”, “express-graphql”: “^0.11.0”, “graphql”: “^15.3.0” } }

2.3 Tạo server

Tiếp đến tạo file server.js để chạy server:

//Import các thư viện cần dùng var categorical = require(‘categorical’); var { graphqlHTTP } = require(‘express-graphql’); var { buildSchema } = require(‘graphql’); // Xây dựng một Schema, sử dụng ngôn ngữ Schema GraphQL var schema = buildSchema(` kind Question { good day: String } `); // Root cung cấp chức năng phân giải cho mỗi endpoint API var root = { good day: () => { return ‘Hi there world!’; }, }; //Tạo server với categorical var app = categorical(); //Khai báo API graphql app.use(‘/graphql’, graphqlHTTP({ schema: schema, rootValue: root, graphiql: true, //sử dụng công cụ GraphiQL để đưa ra các question GraphQL theo cách thủ công })); // Khởi tạo server tại port 4000 app.pay attention(4000); console.log(‘Working a GraphQL API server at http://localhost:4000/graphql’);

Có Thể Bạn Quan Tâm :   Vải thun lạnh là gì? Mặc áo thun lạnh có lạnh như bạn nghĩ?

2.4 Begin server

Sau khi đã tạo được file server, mình sẽ khởi chạy server node vừa tạo với command:

node server.js

Node server

2.5 Check

Nếu bạn truy cập trong trình duyệt internet http://localhost:4000/graphql, bạn sẽ thấy một giao diện cho phép bạn nhập các truy vấn.

Trên browser: Demo GraphQL

Check trên Postman: Test GraphQL

GraphiQL là một công cụ tuyệt vời để debug và kiểm tra server, vì vậy mình khuyên bạn nên chạy nó bất cứ khi nào ứng dụng của bạn ở chế độ develop.

Như vậy, mình vừa check thử cho các bạn cách chạy máy chủ và sử dụng trên giao diện GraphiQL để đưa ra các truy vấn. Bước tiếp theo là tìm hiểu cách đưa ra các truy vấn GraphQL từ shopper.

GraphQL Shoppers

Thực hiện check curl trên command line:

curl -X POST -H “Content material-Sort: software/json” -d ‘{“question”: “{ good day }”}’ http://localhost:4000/graphql

Knowledge response:

{“information”:{“good day”:”Hi there world!”}}

Okay, Như vậy dựa trên kiến thức của mình và các tài liệu tham khảo, mình đã giới thiệu tới các bạn về ngôn ngữ truy vấn GraphQL, có thể nói đây là 1 ngôn ngữ của tương lai theo mình với thời điểm hiện tại thì là như vậy!

Mong rằng sau bài viết này các bạn có thể tiếp cận được GraphQL 1 cách nhanh chóng và dễ dàng hơn…

Cảm ơn các bạn đã đọc bài viết của mình!

Thao khảo

  1. https://graphql.org/
  2. https://topdev.vn/weblog/graphql/
  3. https://www.bravebits.co/bat-dau-voi-graphql-api/
Back to top button