Nội dung bài viết
Video học lập trình mỗi ngày
GraphQL đang trỗi dậy trong thời gian gần đây và có lẽ là tương lai. Các công ty như Facebook, Netflix, Shopify hoặc PayPal đang sử dụng ngôn ngữ dữ liệu và công nghệ API để thúc đẩy sản phẩm của họ. Trong bài viết này, có 5 lý do vì sao họ lại thay đổi, tại sao công ty bạn lại không?
Một bài viết của tác giả Kentaro Wakayama Giám đốc điều hành / Người sáng lập tại Coder Society. Các bạn cân nhắc bài viết này, vì nó mang tính lý thuyết tương đối cao, nếu có sự bổ sung bài thực hành thì dễ hiểu hơn. Nhưng đương nhiên bạn phải biết điểm mạnh và yếu của GraphQL như thế nào, và quan trọng sử dụng GraphQL có hợp với hoàn cảnh công ty bạn không? Tôi vẫn đang xài rest API mà không có sự rắc rối nào cho đến bây giờ. Bài viết được dùng công cụ Mate Translate dịch và có chỉnh sửa.
Sự trỗi dậy của GraphQL
Cách tốt nhất để xây dựng một API hiện nay là gì? REST có lẽ bạn đã nghĩ đến, nhưng nếu bạn định đầu tư để xây dựng phần mềm mới, thì có lẽ bạn nên cân nhắc một vài lựa chọn khác nhau và chọn cái tốt nhất trong số đó.
GraphQL nổi bật như một giải pháp thay thế cho kiến trúc API REST chủ yếu vì nó cung cấp một API có thể khám phá theo thiết kế. Nó cũng đi kèm với ngôn ngữ truy vấn riêng và thời gian chạy để thực hiện các truy vấn thông qua các hàm được gọi.
Được phát triển ban đầu vào năm 2012 tại Facebook như một giải pháp tìm nạp dữ liệu tốt hơn cho các thiết bị di động kém hiệu quả, GraphQL có nguồn mở vào năm 2015. Vào năm 2018, GraphQL đã được chuyển dưới sự chăm sóc của Quỹ Linux, nơi duy trì các dự án quan trọng khác như Node.js, Kubernetes, và tất nhiên, chính Linux.
Sự chuyển động chung xung quanh GraphQL là rất đáng khích lệ cho bất kỳ ai muốn áp dụng nó. Sự phổ biến của nó đã nhanh chóng gia tăng trong vài năm qua, chẳng hạn như đã thấy trên Stack Overflow Trends . Ngoài ra còn có một số câu chuyện thành công tại các công ty danh tiếng như PayPal , Netflix và Coursera , nơi GraphQL là công cụ trong việc xây dựng các API linh hoạt và hiệu suất cao trong các kiến trúc lớn và phức tạp.
Lý do sử dụng GraphQL
Là một công nghệ API được thiết kế để linh hoạt, GraphQL là một công cụ hỗ trợ mạnh mẽ cho cả nhà phát triển và người sử dụng API, cũng như các tổ chức đứng sau chúng. Trong phần này, chúng ta sẽ khám phá một số lĩnh vực chính mà GraphQL tỏa sáng.
Một biểu đồ dữ liệu cho tất cả
GraphQL là một lựa chọn tuyệt vời cho các tổ chức có nhiều nhóm và hệ thống muốn cung cấp dữ liệu của họ một cách dễ dàng thông qua một API thống nhất.
Bất kể bạn sử dụng bao nhiêu cơ sở dữ liệu, dịch vụ, hệ thống kế thừa và API của bên thứ ba, GraphQL có thể che giấu sự phức tạp này bằng cách cung cấp một điểm cuối duy nhất mà khách hàng có thể nói chuyện. Máy chủ GraphQL chịu trách nhiệm tìm nạp dữ liệu từ đúng nơi và khách hàng không bao giờ cần biết chi tiết về nguồn gốc của các phần dữ liệu khác nhau. Do đó, hệ sinh thái GraphQL cung cấp tính linh hoạt tối đa khi giúp khách hàng và người dùng nội bộ dễ dàng cung cấp dữ liệu.
Không tìm nạp quá mức hoặc tìm nạp thiếu
Một lợi ích to lớn khác cho các ứng dụng API GraphQL là họ có thể yêu cầu chính xác dữ liệu họ cần, ngay cả trên các thực thể có liên quan. Điều này đặc biệt quan trọng vì các máy khách khác nhau có các yêu cầu dữ liệu khác nhau, do logic nghiệp vụ khác nhau hoặc vì họ chỉ đơn giản là trình bày một chế độ xem dữ liệu khác nhau (ví dụ: web so với thiết bị di động) và cũng có thể có các giới hạn phần cứng khác nhau.
Bằng cách so sánh, khó hơn nhiều để truy xuất một cách hiệu quả dữ liệu quan trọng từ API REST. Yêu cầu dữ liệu từ một điểm cuối thường sẽ trả về nhiều dữ liệu hơn mức thực sự cần thiết (tìm nạp quá mức), trong khi yêu cầu dữ liệu về một số thực thể có liên quan thường yêu cầu một số lệnh gọi API (tìm nạp thiếu) hoặc các điểm cuối chuyên dụng cho các yêu cầu của khách hàng cụ thể (điều này nhân đôi nỗ lực). GraphQL giải quyết vấn đề này bằng cách cung cấp chính xác dữ liệu mà mỗi khách hàng yêu cầu, không hơn không kém.
Trải nghiệm nhà phát triển tốt hơn
Hệ sinh thái GraphQL đi kèm với một số công cụ giúp làm việc với GraphQL trở nên dễ dàng. Các công cụ như GraphiQL và GraphQL Playground cung cấp trải nghiệm phong phú, cho phép các nhà phát triển kiểm tra và thử các API với nỗ lực tối thiểu, nhờ vào các tính năng tự lập tài liệu mà chúng ta sẽ đề cập trong phần tiếp theo.
Ngoài ra, các công cụ tạo mã như Trình tạo mã GraphQL có thể được sử dụng để tăng tốc độ phát triển hơn nữa, trong khi các công cụ và phương pháp hay nhất khác tồn tại để giải quyết các vấn đề cụ thể bao gồm:
Bộ nhớ đệm phía máy khách có sẵn trong một số thư viện máy khách.
Phân trang dựa trên con trỏ cung cấp một cách để cung cấp phân trang trên các danh sách dữ liệu.
Chất lượng cao hơn của hệ thống của bạn
Các API của GraphQL được xây dựng xung quanh một hệ thống kiểu, hệ thống này đưa ra tên và kiểu của từng trường cũng như các mối quan hệ giữa các thực thể khác nhau. Hệ thống loại này, hoặc lược đồ, được sử dụng để xác thực các truy vấn do khách hàng gửi. Lược đồ có thể thường được sử dụng để tạo tài liệu và code sẽ được sử dụng khi tích hợp API ở phía máy khách.
Do đó, cần nỗ lực tối thiểu để có một API được ghi chép đầy đủ khi sử dụng GraphQL. Điều này mang lại sự minh bạch tuyệt vời cho các nhà phát triển lần đầu tiên làm việc với API và giúp cho việc phát triển trở nên mượt mà và hiệu quả hơn.
Xây dựng để thay đổi
Các API REST thường cung cấp nhiều phiên bản của cùng một API để nó có thể thay đổi mà không phá vỡ chức năng hiện có. GraphQL khuyến khích một cách tiếp cận khác đối với các sửa đổi API: sự tiến hóa.
Khi các thay đổi vi phạm là bắt buộc (ví dụ: đổi tên trường hoặc thay đổi loại của trường), bạn có thể giới thiệu trường mới và không dùng trường cũ nữa, có thể xóa hoàn toàn sau này khi bạn chắc chắn rằng trường đó không còn được sử dụng nữa. Điều này có nghĩa là bạn vẫn có thể thay đổi API của mình trong khi vẫn duy trì khả năng tương thích ngược và một API duy nhất.
Cân nhắc trước khi áp dụng GraphQL
GraphQL là một công cụ tuyệt vời để xây dựng các API có thể mở rộng và linh hoạt, nhưng nó không phải là thuốc chữa bách bệnh và chắc chắn không phải dành cho tất cả mọi người.
Học GraphQL như thế nào?
Trong khi REST là một cách tiếp cận đơn giản và quen thuộc để xây dựng các API, thì GraphQL hoàn toàn là một con thú khác. Các nhà phát triển cũng như kỹ sư cơ sở hạ tầng sẽ cần học cách phát triển và triển khai hiệu quả các API GraphQL, một công việc mà một số người sẽ phải làm quen.
Do đó, các đội có lịch trình dày đặc có lẽ tốt hơn nên sử dụng công nghệ mà họ đã quen thuộc.
Cơ sở hạ tầng và Công cụ
Việc triển khai GraphQL, đặc biệt là ở quy mô lớn, có thể yêu cầu đầu tư đáng kể vào cơ sở hạ tầng và công cụ. Sử dụng nó không giúp bạn phải triển khai máy ảo hoặc vùng chứa, thiết lập cơ sở hạ tầng mạng, triển khai và duy trì phần mềm máy chủ GraphQL trên một môi trường rộng lớn.
Hiệu suất và Bảo mật
Bạn cũng phải hết sức cẩn thận để tính linh hoạt bổ sung được cung cấp bởi GraphQL không dẫn đến các truy vấn có hại hoặc vô tình làm suy giảm hoặc phá hủy hệ thống của bạn. Điều này có thể được giải quyết bằng cách giới hạn tỷ lệ hoặc giới hạn độ phức tạp và độ sâu của truy vấn.
Cuối cùng, điều quan trọng là phải bảo vệ dữ liệu không được công khai. Cơ chế xác thực và ủy quyền phổ biến trong số các công nghệ web khác cũng có thể được sử dụng với GraphQL.
Kết luận
Không có nghi ngờ gì về việc REST hoàn thành công việc, nhưng nếu bạn đang ở thời điểm bạn cần một cách tốt hơn để xây dựng các API và phục vụ các khách hàng đa dạng, thì có lẽ bạn nên dùng thử GraphQL.
GraphQL cho phép bạn xây dựng các API có thể truy vấn và có thể chuyển hóa, ẩn sự phức tạp của các hệ thống nội bộ được sử dụng để truy xuất các phần dữ liệu khác nhau và tận dụng một hệ thống kiểu dẫn đến tài liệu API tự động và cập nhật. Những tính năng này, cùng với hệ sinh thái và công cụ của nó, làm cho GraphQL trở thành một công cụ hữu hiệu và hiệu quả cho các nhà phát triển API và khách hàng.
Để biết thông tin chi tiết của bài viết gốc vui lòng truy cập vào đây