GraphQL: Một thay thế cho REST trên HTTP

GraphQL: Một thay thế cho REST trên HTTP

Nhiều tiêu chuẩn kiến ​​trúc mã nguồn mở tồn tại để xây dựng và phân phối các ứng dụng. REST (Chuyển trạng thái đại diện), SOAP (Giao thức truy cập đối tượng đơn giản), RPC (Gọi thủ tục từ xa) và API GraphQL là phổ biến nhất.





RESTful API là tiêu chuẩn kiến ​​trúc API được sử dụng nhiều nhất. Nếu bạn đã viết các API RESTful phức tạp với nhiều điểm cuối, bạn có thể nhận ra rằng chúng có thể phức tạp như thế nào. Điều này đặc biệt đúng nếu chỉ có sự khác biệt nhỏ giữa các điểm cuối.





LÀM VIDEO TRONG NGÀY

Bạn cũng có thể gặp sự cố với việc tìm nạp dữ liệu vì các API RESTful không đủ linh hoạt để chọn dữ liệu cụ thể. GraphQL giải quyết những vấn đề này của RESTful API.





GraphQL là gì?

GraphQL (Graph Query Language) là một ngôn ngữ truy vấn và thời gian chạy để xây dựng các API. Không giống như các API REST có nhiều điểm cuối để tiêu thụ dữ liệu, các API GraphQL có một điểm đầu vào. Bạn có thể tìm nạp dữ liệu cụ thể bằng cách mô tả dữ liệu đó trong các truy vấn.

Các Đặc tả GraphQL xác định ngôn ngữ truy vấn và cách máy chủ GraphQL hoạt động. Bạn có thể xây dựng và sử dụng các API GraphQL bằng các ngôn ngữ phía máy chủ từ Python đến Javascript và bất kỳ ngôn ngữ nào hỗ trợ HTTP.



Meta đã xây dựng GraphQL vào năm 2012 như một giải pháp thay thế cho REST để xây dựng trên HTTP. Họ đã phát hành GraphQL như một tiêu chuẩn mã nguồn mở vào năm 2015. Ngày nay, nền tảng GraphQL giám sát sự phát triển của đặc tả GraphQL.

GraphQL khá mới, với mức độ áp dụng thấp và có những chi phí ẩn khi sử dụng nó. Việc xây dựng các API GraphQL có thể phức tạp một cách không cần thiết, đặc biệt là đối với các dự án nhỏ với một vài điểm cuối.





Ngoài ra, tất cả các yêu cầu GraphQL cuối cùng trả về mã trạng thái 200 bất kể trạng thái của yêu cầu.

GraphQL hoạt động như thế nào?

  GraphQL's functions and syntax

không giống REST, định hướng tài nguyên , GraphQL yêu cầu bạn nghĩ về dữ liệu như một biểu đồ để tương tác với dữ liệu. Bạn có thể chỉ định cấu trúc của dữ liệu và đặc tả cung cấp giao diện truy vấn mạnh mẽ để tương tác với API qua HTTP. Bạn sẽ có thể sử dụng các tính năng khác nhau tùy thuộc vào Gói hoặc thư viện GraphQL bạn chọn để sử dụng.





ứng dụng gps cho android không có internet

Các lược đồ GraphQL bao gồm các kiểu đối tượng xác định đối tượng có thể yêu cầu và các trường có sẵn của nó. Đối với các truy vấn và đột biến API, gói GraphQL xác thực các truy vấn và thực thi các truy vấn dựa trên các hàm xử lý được chỉ định (trình phân giải).

Tại sao bạn nên sử dụng GraphQL?

REST là một tiêu chuẩn dễ sử dụng và hầu hết các ngôn ngữ lập trình đều có các công cụ để xây dựng các API RESTful một cách nhanh chóng. Tuy nhiên, có nhiều vấn đề với việc xây dựng và sử dụng các API RESTful.

Dưới đây là một số vấn đề với REST khiến các nhà phát triển thích GraphQL hơn cho một số trường hợp sử dụng.

Tìm nạp dữ liệu không hiệu quả

Các API RESTful chuyển tiếp dữ liệu dựa trên đặc điểm kỹ thuật của điểm cuối. Chúng không đủ linh hoạt để truy xuất dữ liệu ngoài những gì được mã hóa cứng trong hàm xử lý của điểm cuối.

Giả sử một điểm cuối trả về danh sách dữ liệu khi gọi và bạn cần chỉ định giá trị hoặc tiêu chí cho các trường. Trong trường hợp đó, nhà phát triển phải tạo một điểm cuối và xác định logic nghiệp vụ để trả về dữ liệu. Bạn có thể phân tích cú pháp tài nguyên có giá trị theo cách thủ công, điều này cuối cùng sẽ mất nhiều thời gian hơn.

GraphQL giải quyết vấn đề tìm nạp dữ liệu không hiệu quả vì bạn có thể truy vấn các API để trả về dữ liệu dựa trên các tiêu chí và thông số kỹ thuật một cách linh hoạt.

Các API GraphQL có tính tương tác; bạn có thể chỉ định dữ liệu bạn cần lấy bằng một cú pháp dễ đọc, dễ đọc.

{ 
user(where: {age: {_eq: "89"}}) {
name
school(where: {alive: {_eq: true}}) {
bio
nationality
}
}
}

Truy vấn GraphQL ở trên truy vấn a người sử dụng lược đồ cho các mục nhập trong đó tuổi tác trường là 89. Truy vấn có một truy vấn nhúng cho các mục nhập trong đó còn sống lĩnh vực đánh giá thật . Nó trả về các trường tên, tiểu sử và quốc tịch từ lược đồ.

Phát triển nhanh chóng

Việc xây dựng và sử dụng các API GraphQL dễ dàng hơn so với sử dụng REST, đặc biệt là khi quy mô dự án tăng lên. Trong giai đoạn phát triển, bạn không cần phải phát triển nhiều tuyến và chức năng xử lý như khi phát triển các API RESTful. Việc tiêu thụ các API GraphQL không tẻ nhạt như các API RESTful.

Trong REST, các điểm cuối khác nhau cung cấp quyền truy cập vào các tài nguyên khác nhau, không giống như GraphQL, nơi có một điểm cuối duy nhất. Điều này mang lại sự linh hoạt và hiệu suất, đồng thời các truy vấn có thể gọi các hàm trình phân giải khác nhau.

trang web hẹn hò trực tuyến miễn phí cho thanh thiếu niên

Ngôn ngữ định nghĩa lược đồ GraphQL

Ngôn ngữ định nghĩa lược đồ GraphQL (SDL) chỉ định các lược đồ cho các dịch vụ GraphQL.

Cú pháp GraphQL SDL rất dễ đọc và dễ hiểu. Bạn sẽ chỉ định cấu trúc lược đồ của mình trong một tệp có .graphql hoặc .graphqls sự mở rộng.

type Human { 
name: String!
age: Int!
}

input AddHuman {
name: String!
age: Int!
}

type Mutation {
CreateHuman(input: AddHuman!): Human!
DeleteHuman(id: Int!): String!
UpdateHuman(id: Int!): String!
}

type Query {
GetHuman(id: Int!): Human!
GetHumans: [Human!]!
}

Mã GraphQL ở trên là giản đồ cho API GraphQL xác định cấu trúc của API cho các yêu cầu. Lược đồ xác định chức năng CRUD cho API.

Về phía máy khách, dựa trên cấu trúc của lược đồ và dữ liệu hoặc hoạt động của máy khách, máy khách có thể thực hiện truy vấn (NHẬN hoặc XÓA trong REST) ​​hoặc đột biến (PUT hoặc POST).

Dưới đây là một ví dụ về truy vấn Nhân loại lược đồ.

query Human { 
name
age
}

Truy vấn trên sẽ trả về lược đồ của con người Tên tuổi tác trường dữ liệu.

Các đột biến GraphQL có cú pháp khá khác so với các truy vấn. Đây là một ví dụ về hoạt động đột biến trên Nhân loại lược đồ.

mutation { 
CreateHuman(input:{ name:"man", age:1000000000000000,}) {
name
age
}
}

Đầu vào mã đột biến Tên tuổi tác các trường cho máy khách và trả về dữ liệu từ các trường.

cách kết nối Internet trên máy tính xách tay

Bạn sẽ cần một kho lưu trữ dữ liệu để duy trì sự ổn định khi xây dựng API GraphQL của mình. Giống như REST và hầu hết các kiến ​​trúc web dựa trên HTTP, GraphQL là không trạng thái và bạn có thể sử dụng bất kỳ kho dữ liệu hoặc cơ sở dữ liệu nào cho ứng dụng của mình.

Xây dựng API GraphQL

  Các ngôn ngữ được hỗ trợ của GraphQL

GraphQL là một đặc tả và bạn có thể xây dựng GraphQL bằng các ngôn ngữ phía máy chủ phổ biến nhất. Bạn sẽ phải tìm một thư viện có các tính năng cần thiết cho dự án của mình.

Khi chọn một thư viện GraphQL, bạn muốn sử dụng một thư viện giàu tính năng hỗ trợ tất cả các loại và hoạt động GraphQL. Hầu hết các thư viện sử dụng phương pháp tiếp cận theo lược đồ đầu tiên hoặc đầu tiên mã. Trước đây, bạn xác định một lược đồ GraphQL và thư viện tạo các trình phân giải và mã soạn sẵn. Đối với phần sau, bạn mã hóa các trình phân giải mà không cần xác định lược đồ.

GraphQL đang được chấp nhận

Kể từ khi ra đời GraphQL, các nhà phát triển và công ty đã phát hành các công cụ để đơn giản hóa việc sử dụng nó. Những điều này có thể làm giảm thời gian phát triển cho các dự án vừa và nhỏ.

Bạn có thể xem các máy khách GraphQL mã nguồn mở, tài liệu GraphQL và đặc điểm kỹ thuật của nó để tìm hiểu thêm.