Cách tính số request
Mỗi trường thao tác gốc được thực thi là một lệnh gọi API. Một request GraphQL yêu cầu bốn trường gốc sẽ được tính phí là bốn lệnh gọi API, giống hệt như khi bạn thực hiện bốn request REST. Các alias ở cấp gốc được tính riêng vì mỗi alias gửi đi một thao tác. Các trường lồng nhau được chọn từ một phản hồi có kiểu không làm tăng số lệnh gọi API.- Các giới hạn gói hiện tại của bạn vẫn áp dụng không thay đổi. Xem giới hạn API để biết mức cho phép của gói của bạn.
- Yêu cầu một thao tác gốc mà bạn không cần có chi phí giống như gọi nó qua REST. Việc chọn các trường phản hồi lồng nhau mà bạn cần không làm tăng số lệnh gọi.
- Một request có thể bị giới hạn tốc độ giữa chừng. Các trường gốc đã hoàn tất vẫn giữ dữ liệu của chúng, và chỉ các trường gốc bị giới hạn mới trả về lỗi — xem Thành công một phần.
Giới hạn truy vấn
Endpoint áp dụng một vài giới hạn về cấu trúc và kích thước của truy vấn. Chúng tồn tại để một request đơn lẻ không thể tiêu tốn quá nhiều năng lực xử lý của chúng tôi, và được đặt cao hơn nhiều so với nhu cầu sử dụng thông thường — nếu bạn chạm tới một giới hạn, đó thường là dấu hiệu của một truy vấn được tạo ra ngoài ý muốn chứ không phải nhu cầu thực sự.
Một truy vấn bị từ chối trả về HTTP 400 nếu bạn gửi
Accept: application/graphql-response+json, và HTTP 200 trong các trường hợp khác, kèm một mảng errors và không có data trong cả hai trường hợp. Xem Lỗi.
Số lệnh gọi API mỗi request
Đây là giới hạn quan trọng. Một request đơn lẻ có thể kích hoạt tối đa 5 lệnh gọi API, vì vậy ví dụ bốn trường gốc ở trên là ổn nhưng một request với hai mươi trường gốc thì không. Khi năm lần dispatch đã bắt đầu, các trường gốc bổ sung sẽ trả về lỗi 429 giải thích giới hạn; các trường đã được dispatch vẫn có thể trả về dữ liệu của chúng. Nếu bạn cần nhiều hơn, hãy chia truy vấn thành nhiều request. Nếu bạn thấy mình thường xuyên phải làm vậy cho một khối lượng công việc hợp lệ, hãy liên hệ với chúng tôi — giới hạn này được cố ý đặt thận trọng khi ra mắt và việc nâng nó lên rất đơn giản, trong khi hạ nó xuống sau này sẽ làm hỏng các tích hợp, vì vậy nó bắt đầu ở mức nhỏ.Độ sâu, số trường, alias và directive
Các giới hạn này được kiểm tra trước khi bất cứ thứ gì chạy, vì vậy vượt quá một giới hạn không tốn của bạn lệnh gọi API nào. Chúng cũng vượt xa một truy vấn introspection đầy đủ, vốn có khoảng 180 trường và sâu 12 cấp mà không có alias hay directive, vì vậy một client lấy toàn bộ schema khi khởi động vẫn hoạt động bình thường.Kích thước body request
64 KB, rộng rãi đối với một truy vấn và quá nhỏ đối với một tệp. Đây là lý do media không thể được tải lên thông qua GraphQL — xem Tải media lên để biết cách được hỗ trợ.Thời gian chờ
Một request được cho phép tổng cộng tối đa 120 giây. Các trường gốc trong một query có thể chạy đồng thời, vì vậy thời lượng của nó thường phụ thuộc vào phần phụ thuộc chậm nhất. Các trường gốc trong một mutation chạy tuần tự, vì vậy nhiều mutation chậm có thể cộng dồn đến mức chạm thời gian chờ. Cả hai dạng vẫn có thể tạo ra tải tương đương tối đa năm lần dispatch đồng thời hoặc tuần tự lên backend; hãy tách riêng các công việc đã biết là chậm khi phù hợp.Những gì không bị giới hạn
- Đọc schema. Introspection không cần xác thực và không bị tính phí. Duyệt những gì hiện có là miễn phí; chạy một thao tác thì không.
- Truy vấn sai định dạng. Một truy vấn bị GraphQL từ chối — trường không xác định, sai kiểu, giá trị enum không hợp lệ — không bao giờ đến được API của chúng tôi và không bao giờ bị tính phí.