अनुरोध और लागत समझें
उदाहरण काल्पनिक स्कीमा का है: असली API में customer, orders और total होने चाहिए। एक अनुरोध सर्वर पर कई रीड करा सकता है। REST भी जरूरत के अनुसार उत्तर दे सकता है। एक HTTP एंडपॉइंट GraphQL में आम है, हर आर्किटेक्चर की अनिवार्यता नहीं।
query RecentOrders($id: ID!) {
customer(id: $id) {
name
orders(first: 5) {
nodes { id total }
}
}
}प्रतिनिधि काम की तुलना करें
- उसी स्क्रीन, अधिकार और वास्तविक डेटा मात्रा पर बाइट, देरी, त्रुटि और सर्वर का काम मापें।
- पेजिनेशन, N+1 घटाने के लिए समूह में रीड, कैश और खातों के बीच डेटा अलगाव जाँचें।
- स्कीमा बदलाव, पुराने क्लाइंट की संगतता और संचालन लागत देखें। REST बनाए रखना सरल हो सकता है।
अधिकार और लोड सीमा लागू करें
अनुरोध प्रमाणित करें, फिर बिज़नेस लॉजिक में ऑब्जेक्ट और फ़ील्ड के अधिकार जाँचें। सूची आकार, गहराई, उपनाम, समूहबद्ध ऑपरेशन और अनुमानित लागत सीमित करें। अनुरोध दर अकेले पूरा लोड नहीं बताती। इंट्रोस्पेक्शन छिपाना इन जाँचों का विकल्प नहीं; अस्वीकृति और आंशिक उत्तर भी परखें।
प्राथमिक स्रोत
GraphQL स्कीमा और क्वेरी कॉस्ट को कंट्रोल करें।
GraphQL क्लाइंट्स को फ़ील्ड चुनने देता है, लेकिन उस फ़्लेक्सिबिलिटी के लिए ऑब्जेक्ट और फ़ील्ड ऑथराइज़ेशन की ज़रूरत होती है। सिर्फ़ साइज़ या डेप्थ कैप, क्वेरी से होने वाले काम को मापने की जगह नहीं ले सकता।
- सेंसिटिव फ़ील्ड्स और किसी दूसरे अकाउंट के ऑब्जेक्ट्स को टेस्ट करें।
- सर्विस के लिए कॉस्ट, डेप्थ और रिक्वेस्ट वॉल्यूम को लिमिट करें और देखें।
- वर्शन स्कीमा में बदलाव करें और पुराने क्लाइंट्स का इस्तेमाल करें।
प्राथमिक स्रोत: OWASP — GraphQL Cheat Sheet. संबंधित विधि: व्यावहारिक मार्गदर्शिका पढ़ें.
ETag, HTTP कैश और समवर्ती बदलाव
इस संस्करण में विस्तृत संदर्भ टिप्पणियाँ अंग्रेज़ी में उपलब्ध हैं।
REST and GraphQL: separate representation and authorisation
An HTTP ETag applies to a selected representation. It is neither permission for every returned object nor a universal consistency contract for GraphQL entities.
- Define which response variants have their own validators.
- Test object and field access independently from HTTP conditions.
- Do not automatically apply the PUT scenario to a GraphQL mutation; specify its concurrency contract.
Explore ETag comparisons and the simulator →
References reviewed · RFC 9110 · §13 · RFC 9111 · RFC 6585 · §3
