GraphQL

GraphQL đảo lại một chuyện: bên gọi tự khai mình cần dữ liệu hình dạng nào. Ba chặng, đi từ viết được một câu query tới hiểu cái giá phải trả.

9 cột mốc · 2 có bài trong app

Bắt đầu
  1. 1Viết được một câu query

    Xin đúng những trường bạn cần, không thừa một trường nào.

  2. 2Phía máy chủ

    Hiểu ai thật sự đi lấy dữ liệu khi bạn xin một trường.

    • Schema và typetự tìm hiểuHợp đồng giữa hai bên, máy đọc được — đây là chỗ GraphQL mạnh nhất.
    • Resolvertự tìm hiểuMỗi trường có một hàm đi lấy giá trị cho nó. Cây query gọi cây resolver.
    • Mutationtự tìm hiểuGhi dữ liệu. Tách riêng khỏi query để rõ cái nào có tác dụng phụ.
  3. 3Cái giá phải trả

    Biết ba chỗ GraphQL đắt hơn REST, để chọn cho đúng việc.

    • Vấn đề N+1tự tìm hiểuMột query xin danh sách kèm tác giả có thể thành hàng trăm truy vấn database.
    • Cache khó hơntự tìm hiểuMọi thứ đi qua một endpoint POST, nên cache theo URL của HTTP không dùng được nữa.
    • Query quá nặngtự tìm hiểuNgười gọi có thể xin một câu lồng mười tầng. Phải giới hạn độ sâu và độ phức tạp.
Đích

Lộ trình dừng ở đây

Ba chặng trên đủ để quyết định có nên dùng GraphQL cho một dự án hay không. Phần dưới là hướng đi tiếp.

  • DataLoaderCách chuẩn để dập vấn đề N+1: gom nhiều lần hỏi thành một.
  • SubscriptionNhánh thời gian thực của GraphQL, chạy trên WebSocket.
  • Persisted queryGửi mã của câu query thay vì cả câu — nhẹ hơn và chặn được query lạ.