मान्य इनपुट का अर्थ अलग हो सकता है
JSON दस्तावेज ऑब्जेक्ट, ऐरे या सरल मान हो सकता है। इसलिए अनुबंध ऑब्जेक्ट माँगे तब भी null सिंटैक्स के अनुसार मान्य है। कुछ संख्याएँ JavaScript की पूर्णांक सटीकता से बड़ी होती हैं; दोहराए गुण नाम हर पार्सर एक जैसे नहीं समझता।
| प्रदर्शन इनपुट | सिंटैक्स की व्याख्या | बाकी जाँच |
|---|---|---|
| {"ok":true} | मान्य। | क्या मान अनुबंध पूरा करता है? |
| {"ok":true,} | अमान्य: अंतिम कॉमा। | त्रुटि स्पष्ट रूप से सँभालें। |
| null | मान्य। | क्या अनुबंध null की अनुमति देता है? |
| {"id":9007199254740993} | मान्य संख्या, JavaScript में सटीकता का जोखिम। | इस पहचानकर्ता के लिए स्ट्रिंग रखें। |
| {"a":1,"a":2} | दोहराए नाम: व्याख्या पोर्टेबल नहीं। | अस्वीकार करने की नीति तय और लागू करें। |
प्राप्ति का हर चरण जाँचें
- रखरखाव वाला JSON पार्सर उपयोग करें, eval कभी नहीं। HTTP स्थिति, अपेक्षित सामग्री प्रकार, आकार सीमा और गायब या खराब बॉडी का स्पष्ट प्रबंधन जाँचें।
- फिर अनुबंध जाँचें: मूल प्रकार, जरूरी फील्ड, अनुमत मान और अनुपस्थित, null व शून्य का अंतर। अनुबंध कहे तो लंबे पहचानकर्ता स्ट्रिंग रखें।
- गहराई व संसाधन सीमा, दोहराए नाम की नीति और त्रुटि प्रबंधन तय करें। उचित सुरक्षा के बिना मिली स्ट्रिंग HTML या क्वेरी में न डालें।
डेटा खोले बिना उपयोगी त्रुटियाँ रखें
आंशिक उत्तर, संस्करण बदलाव और Unicode जाँचें। गोपनीय जानकारी या पूरी बॉडी के बजाय न्यूनतम संदर्भ दर्ज करें। डिकोडिंग विफलता को सफल खाली परिणाम न बनाएँ और पूरी प्रक्रिया चुपचाप बंद न होने दें।
प्राथमिक स्रोत
पेलोड लीक किए बिना JSON API एरर लॉग करें।
एक JSON बॉडी में आइडेंटिफ़ायर, सीक्रेट या पर्सनल डेटा हो सकता है। डायग्नोसिस के लिए अक्सर पूरे पेलोड के बजाय इवेंट टाइप, रूट, आउटकम, कोरिलेशन आइडेंटिफ़ायर और एक नॉन-सेंसिटिव फ़ेलियर डिटेल की ज़रूरत होती है।
- फ़ील्ड को क्लासिफ़ाई करें और उन फ़ील्ड को मास्क करें जिनकी डायग्नोसिस के लिए ज़रूरत नहीं है।
- सिंथेटिक वैल्यू के साथ पार्सिंग और स्कीमा फ़ेलियर को टेस्ट करें।
- चेक करें कि एरर लॉग और एक्सपोर्ट पूरे पेलोड कॉपी न करें।
प्राथमिक स्रोत: ACSC and partners — Event logging and threat detection. संबंधित विधि: व्यावहारिक मार्गदर्शिका पढ़ें.
पर्सनलाइज़्ड JSON और कैश कीज़
एडिशनल रिव्यू पॉइंट: पर्सनलाइज़्ड JSON और कैश कीज़। एक रिप्रेजेंटेशन-लेवल पॉलिसी और टेस्ट जो बदलावों के बाद क्रॉस-अकाउंट लीकेज और पुराना कंटेंट ढूंढते हैं।
- रिटेंशन चुनें: RFC 9111 डायरेक्टिव को अलग करता है: नो-कैश को दोबारा इस्तेमाल करने से पहले वैलिडेशन की ज़रूरत होती है, नो-स्टोर संबंधित HTTP स्टोरेज को रोकता है, और अनक्वालिफाइड प्राइवेट शेयर्ड स्टोरेज को बाहर करता है। इनमें से कोई भी अकेले सिस्टम कॉन्फिडेंशियलिटी की गारंटी नहीं देता है।
- कीज़ को इंस्पेक्ट करें: रिप्रेजेंटेशन बदलने वाले मेथड, URI और डाइमेंशन को चेक करें। वेरी रिक्वेस्ट फील्ड्स से संबंधित है; यह ऑथराइज़ेशन नहीं है। एप्लीकेशन लेयर्स में छूटी हुई भाषा, फॉर्मेट नेगोशिएशन और अकाउंट कॉन्टेक्स्ट को ढूंढें।
प्राथमिक स्रोत: IETF — RFC 9111, HTTP Caching. संबंधित विधि: व्यावहारिक मार्गदर्शिका पढ़ें.
API पृष्ठ विभाजन और संगत निर्यात
बदलता डेटा निर्यात में गायब या दोहराए रिकॉर्ड बना सकता है।
- फ़िल्टर, क्रम और बराबर मानों का क्रम तय करने वाली कुंजी लिखें। जाँचें कि API स्नैपशॉट देता है या बदलते समूह को पढ़ता है। पढ़ते समय नया रिकॉर्ड और हटाना जाँचें; कर्सर होना डेटा स्थिर होने की गारंटी नहीं है।
- AIP-158 में खाली next_page_token अंत बताता है, छोटा या खाली परिणाम पृष्ठ नहीं। काल्पनिक पृष्ठ [A,B] और [B,C] में चार पंक्तियाँ पर तीन अद्वितीय पहचानकर्ता हैं। बिना प्रगति वही कर्सर भी पहचानें और वास्तविक API अनुबंध मानें।
- बैच को स्थायी रूप से सहेजकर ही आगे की स्थिति तय करें। स्थिर पहचानकर्ताओं से बाधित बैच दोहराएँ और हर अनुरोध पर अनुमति जाँचें; कर्सर पहुँच का अधिकार नहीं है। स्नैपशॉट खत्म होने पर फिर शुरू करें या स्पष्ट नीति से मिलान करें; अलग अवस्थाएँ चुपचाप न जोड़ें।
दोहराने योग्य स्वीकृति मामला
काल्पनिक उदाहरण: डेटा किसी ग्राहक या देखे गए परिणाम का नहीं है।
मामले के इनपुट देखें
{
"page_1_ids": [
"A",
"B"
],
"page_2_ids": [
"B",
"C"
],
"next_cursor": "c2",
"empty_page_has_next_cursor": true
}अपेक्षित निर्णय
B दोहराया गया है। पहचान जाँचें और खाली पृष्ठ के बाद भी अगला कर्सर हो तो जारी रखें।
सत्यापन प्रक्रिया
- फ़िल्टर, स्थिर क्रम और पहचान तय करें।
- दोहराव और अगले कर्सर वाला खाली पृष्ठ जाँचें।
- पहचान और असली समाप्ति शर्त रखें। प्राप्त ऑब्जेक्ट और अद्वितीय पहचानकर्ता मिलाएँ; दोहराया कर्सर चिह्नित करें और आगे पृष्ठ वाली खाली प्रतिक्रिया को संग्रह का अंत न मानें।
क्या अपेक्षित पंक्ति संख्या निर्यात की पूर्णता साबित करती है?
नहीं। गायब और दोहरा पहचानकर्ता संख्या में एक-दूसरे को संतुलित कर सकते हैं। पहचानकर्ता, दायरा और कटऑफ तुलना करें और अनसुलझे अंतर लिखें।
प्राथमिक स्रोत: Google AIP-158 — Pagination. संबंधित विधि: व्यावहारिक मार्गदर्शिका पढ़ें.
