Chào mọi người. Sau thời điểm tìm hiểu về GraphQL, mình xin mạo muội chia sẻ chút tri thức về nó cho mọi người cùng tiếp cận và bí quyết dùng GraphQL như thế nào nhé.
I. Giới thiệu về GraphQL
1.1 Tổng quan
GraphQL là ngôn ngữ thực hiện và truy vấn dữ liệu nguồn mở cho API, phân phối cho consumer 1 bí quyết thức dễ dàng để request chính xác những gì họ cần, giúp việc phát triển thành API dễ dàng hơn theo thời kì. GraphQL được Fb phát triển thành nội bộ vào 5 2012 trước lúc phát hành công khai vào 5 2015.
GraphQL bao gồm 3 điểm đặc thù bao gồm:
- Cho phép consumer xác định chính xác những dữ liệu gì họ cần
- GraphQL khiến cho việc tổng hợp dữ liệu từ nhiều nguồn dễ dàng hơn
- Dùng 1 kind system để khai báo dữ liệu.
1.2 Trả về chính xác những gì bạn gửi request
- Lúc bạn gửi 1 request GraphQL tới API của bạn, bạn sẽ nhận được chính xác những gì bạn đề nghị trong request, ko hơn ko kém.
- Những truy vấn GraphQL luôn trả về kết quả có thể dự đoán được.
- Những ứng dụng dùng GraphQL siêu nhanh và ổn định vì GraphQL kiểm soát dữ liệu mà nó nhận được chứ ko buộc phải máy chủ.
1.3 Nhận nhiều dữ liệu trong 1 request duy nhất
- Những câu question GraphQL ko chỉ có thể truy xuất những thuộc tính của 1 dữ liệu mà còn khiến việc trơn tru có những đối tượng khác.
- Trong lúc những API REST chúng ta hay dùng buộc phải đề nghị request từ nhiều URL thì API GraphQL lại có thể lấy toàn bộ dữ liệu mà ứng dụng của bạn cần trong 1 request duy nhất.
- Những ứng dụng dùng GraphQL có tốc độ xử lý siêu nhanh ngay cả trên những kết nối chậm.
1.4 Mô tả những gì có thể có 1 kind system
- API GraphQL được tổ chức theo sorts và fields, truy cập toàn bộ dữ liệu của bạn từ 1 endpoint duy nhất.
- GraphQL dùng những sorts để đảm bảo ứng dụng của bạn chỉ request những gì có thể, bên cạnh ra GraphQL còn giải thích những lỗi 1 bí quyết siêu dễ hiểu.
- Ứng dụng của bạn có thể dùng những sorts để giảm thiểu viết code phân tách cú pháp thủ công.
OK, như vậy sau 1 hồi đọc lý thuyết thì cũng lời yêu cầu chút thực hành để rõ hơn người sử dụng nhỉ?
II. Khởi đầu có GraphQL:
2.1 Chuẩn bị
Sở hữu 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, … Khách hàng có thể tham khảo code demo tại đây: sentayho.com.vn/code/
Trong bài này mình dùng NodeJS 10.15.1 để demo.
2.2 Khởi tạo mission
Bí quyết đơn giản nhất để chạy máy chủ API GraphQL là dùng module specific (1 khuôn ứng dụng internet phổ thông} cho sentayho.com.vn). Bạn sẽ cần cài đặt thêm 2 package deal express-graphql, graphql.
- specific: Chạy máy chủ internet và thực hành truy vấn quản lý có hàm graphql
- express-graphql: Gắn máy chủ API GraphQL trên endpoint HTTP /graphql
- graphql: Bundle để dùng API GraphQL
Chạy command line:
npm init npm set up specific express-graphql graphql -save
Hoặc tạo file sentayho.com.vn có nội dung:
{ “title”: “graph_ql”, “model”: “1.0.0”, “description”: “”, “primary”: “index.js”, “scripts”: { “check”: “echo “Error: no check specified” && exit 1″ }, “creator”: “”, “license”: “ISC”, “dependencies”: { “specific”: “^4.17.1”, “express-graphql”: “^0.11.0”, “graphql”: “^15.3.0” } }
2.3 Tạo server
Tiếp tới tạo file sentayho.com.vn để chạy server:
//Import những thư viện cần dùng var specific = require(‘specific’); var { graphqlHTTP } = require(‘express-graphql’); var { buildSchema } = require(‘graphql’); // Xây dựng 1 Schema, dùng ngôn ngữ Schema GraphQL var schema = buildSchema(` kind Question { good day: String } `); // Root phân phối chức năng phân giải cho từng endpoint API var root = { good day: () => { return ‘Hiya world!’; }, }; //Tạo server có specific var app = specific(); //Khai báo API graphql sentayho.com.vn(‘/graphql’, graphqlHTTP({ schema: schema, rootValue: root, graphiql: true, //dùng công cụ GraphiQL để đưa ra những question GraphQL theo bí quyết thủ công })); // Khởi tạo server tại port 4000 sentayho.com.vnen(4000); sentayho.com.vn(‘Operating a GraphQL API server at http://localhost:4000/graphql’);
2.4 Begin server
Sau thời điểm đã tạo được file server, mình sẽ khởi chạy server node vừa tạo có command:
node sentayho.com.vn
2.5 Check
Giả dụ bạn truy cập trong trình thông qua internet http://localhost:4000/graphql, bạn sẽ thấy 1 giao diện cho phép bạn nhập những truy vấn.
Trên browser:
Check trên Postman:
GraphiQL là 1 công cụ tuyệt vời để debug và đánh giá server, vì vậy mình khuyên bạn nên chạy nó bất cứ lúc nào ứng dụng của bạn trên chế độ develop.
Như vậy, mình vừa check thử cho người sử dụng bí quyết chạy máy chủ và dùng trên giao diện GraphiQL để đưa ra những truy vấn. Bước tiếp theo là tìm hiểu bí quyết đưa ra những truy vấn GraphQL từ consumer.
GraphQL Purchasers
Thực hành 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”:”Hiya world!”}}
III. Tổng kết
Okay, Như vậy dựa trên tri thức của mình và những tài liệu tham khảo, mình đã giới thiệu tới người sử dụng 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 có thời điểm hiện tại thì là như vậy!
Mong rằng sau bài viết này người sử dụng có thể tiếp cận được GraphQL 1 bí quyết nhanh chóng và dễ dàng hơn…
Cảm ơn người sử dụng đã đọc bài viết của mình!
Thao khảo
- https://graphql.org/
- https://topdev.vn/weblog/graphql/
- https://www.bravebits.co/bat-dau-voi-graphql-api/