GH GambleHub

एपीआई त्रुटि कोड और सर्वोत्तम अभ्यास

1) त्रुटियों को मानकीकृत क्यों करें

ग्राहकों के लिए पूर्वानुमान: एक एकल प्रारूप और रेट्रास का व्यवहार।

डिबग त्वरण: 'trace _ id '/' requess _ id', स्थिर 'त्रुटि _ code'.
सुरक्षा: SQL/स्टैक ट्रेस/कॉन्फ़िग लीक नहीं होगा.

अवलोकन: त्रुटि वर्गीकरण (सत्यापन, कोटा, टाइमआउट, आदि) पर रिपोर्टिंग।

2) बुनियादी सिद्धांत

1. सभी 4xx/5xx के लिए एक एकल प्रतिक्रिया प्रारूप (और आंशिक त्रुटियों के साथ 2xx के लिए - एक अलग योजना)।

2. साफ HTTP शब्दार्थ: सही स्थिति सबसे महत्वपूर्ण है।

3. कोड के दो स्तर: परिवहन ('स्थिति') और डोमेन स्थिर 'त्रुटि _ कोड'।

4. पुनर्प्राप्य बनाम गैर-पुनर्प्राप्य: स्पष्ट रूप से निर्दिष्ट करें और बैक-ऑफ के बारे में संकेत दें।

5. डिफ़ॉल्ट सुरक्षा: विवरण - केवल अधिकारों के साथ क्लाइंट के लि आंतरिक निशान के बिना।

6. स्थानीयकरण: मशीन कोड स्थिर रहता है, पाठ - हम अनुवाद करते हैं।

3) एकल त्रुटि प्रारूप (RFC 7807 पर आधारित)

अनुशंसित JSON (विस्तारित 'अनुप्रयोग/समस्या + json'):
json
{
"type": "https://api. example. com/errors/validation_failed",
"title": "Validation failed",
"status": 422,
"error_code": "VAL_001",
"detail": "Field 'email' must be a valid address",
"instance": "req_01HZY...93",
"trace_id": "a1b2c3d4e5f6",
"retriable": false,
"errors": [
{"field": "email", "code": "email_invalid", "message": "Invalid email"}
],
"hint": "Fix payload and retry",
"meta": {"docs": "https://docs. example. com/errors#VAL_001"}
}

आवश्यक: 'प्रकार', 'शीर्षक', 'स्थिति', 'त्रुटि _ कोड', 'ट्रेस _ आईडी'.

वैकल्पिक: 'त्रुटियां []' (फ़ील्ड्स द्वारा), 'प्रतिशोधी', 'संकेत', 'मेटा'।

जवाब में शीर्षिका:
  • 'सामग्री-प्रकार: एप्लिकेशन/समस्या + json'
  • 'एक्स-रिक्वेस्ट-आईडी '/' ट्रेसपेरेंट' (W3C)
  • (429/503 के लिए) 'रीट्री-आफ्टर' (सेकंड या डेट)

4) एचटीटीपी स्टेटस के शब्दार्थ ("क्लासिक्स" और अभ्यास का विलय)

2xx (सूक्ष्म सफलता)

200 ओके एक आम सफलता है।

201 बनाया गया - स्थान।

202 स्वीकार किया - कतार में अतुल्यकालिक रूप से ('स्थिति _ url' दें)।

207 बहु-स्थिति - आंशिक सफलता (यदि संभव हो तो बचें)।

4xx (क्लाइंट त्रुटि)

400 खराब अनुरोध - सिंटैक्स/प्रारूप, लेकिन क्षेत्र सत्यापन नहीं (अधिमानतः 422)।

401 अनधिकृत - नहीं/अमान्य टोकन। चलो 'WWW-Authenticate।'

403 वर्जित - टोकन वैध है, लेकिन पर्याप्त अधिकार नहीं हैं (आरबीएसी/एबीएसी/सीमाएं)।

404 नहीं मिला - कोई संसाधन/समापन बिंदु नहीं।

409 संघर्ष - इष्टतम लॉकिंग, पहचान।

410 गया - समापन बिंदु स्थायी रूप से हटा दिया गया।

412 पूर्व शर्त विफल - ETag/if-Match विफल।

415 असमर्थित मीडिया प्रकार - अवैध 'सामग्री-प्रकार'.

422 व्यापार नियमों का अप्रमाणित इकाई - सत्यापन।

429 बहुत से अनुरोध - कोटा/गति से अधिक (देखें)।

5xx (सर्वर त्रुटि)

500 आंतरिक सर्वर त्रुटि - अचानक त्रुटि; विवरण का खुलासा नहीं करना।

502 खराब गेटवे - अपस्ट्रीम त्रुटि।

503 सेवा अनुपलब्ध - गिरावट/अधिभार, 'रेट्री-आफ्टर' देना।

504 गेटवे टाइमआउट - बैकेंड टाइमआउट।

💡 थ्रेशोल्ड: 4xx रिट्रीम नहीं है, 5xx रिट्राएबल है (बैकऑफ/जिटर), 429 'रेट्री-आफ्टर' के बाद रिट्रे है।

5) डोमेन टैक्सोनॉमी 'त्रुटि _ कोड'

हम निम्नलिखित श्रेणियों की सिफारिश करते हैं:
  • 'AUTH _' - प्रमाणीकरण/प्राधिकरण।
  • 'VAL _' - इनपुट डेटा का सत्यापन।
  • 'RATELIMIT _' - कोटा और गति।
  • 'IDEMP _' - idempotence/duplicates।
  • 'COMPLENT _' - संस्करण/स्थि
  • 'डीईपी _' - निर्भरता (पीएसपी/डीएनएस/एसएमटीपी)।
  • 'PAY _' - भुगतान डोमेन की व्यापार त्रुटियां।
  • 'एसईसी _' - सुरक्षा (हस्ताक्षर, एचएमएसी, एमटीएलएस)।
  • 'INT _' - आंतरिक अचानक।
आवश्यकताएं:
  • समय के साथ स्थिरता (बैक-कॉम्पैट)।
  • त्रुटि निर्देशिका में विवरण और उदाहरण (डॉक्स + मशीन-पढ़ने योग्य JSON)।

6) पुनर्प्राप्य बनाम गैर-पुनर्प्राप्य

क्षेत्र:
  • 'पुनर्विचार योग्य: सच' falsey '
  • यदि 'सही' - आवश्यक रूप से 'रेट्री-आफ्टर' (सेकंड में) या अनुबंध "घातीय बैक-ऑफ (1-2 एस से शुरू, अधिकतम 30-60 एस)"।

पुनर्प्राप्य आमतौर पर: '502/503/504', कुछ '500', '429' (विंडो के बाद)।

गैर-पुनर्प्राप्य: '400/401/403/404/ 409/410/415/422'।

7) दर सीमा और कोटा त्रुटियां (429)

शरीर:
json
{
"type": "https://api. example. com/errors/rate_limited",
"title": "Rate limit exceeded",
"status": 429,
"error_code": "RATELIMIT_RPS",
"detail": "Too many requests",
"retriable": true
}
शीर्षक:
  • 'रीट्री-आफ्टर: 12'
  • 'एक्स-रेटलिमिट-लिमिट', 'एक्स-रेटलिमिट-शेष', 'एक्स-रेटलिमिट-रीसेट'
  • Для квот: 'एक्स-कोटा-लिमिट', 'एक्स-कोटा-शेष', 'एक्स-कोटा-रीसेट'

8) अज्ञानता और संघर्ष

लिखने के अनुरोधों में - 'आइडेम्पोटेंसी-की' (24-72 घंटे के भीतर अद्वितीय)।

'error _ code के साथ संघर्ष → 409 संघर्ष की कोशिश करें: "IDEMP_REPLAY"'।

ETag → 412 पूर्व शर्त के लिए संसाधन संस्करण संघर्ष विफल।

प्रतिक्रिया में, सुरक्षित पुन: अनुरोध के लिए 'resource _ id '/' state _ url' संलग्न करें।

9) मान्यता और 422

क्षेत्र के अनुसार त्रुटियों की सूची वापस करें:
json
{
"status": 422,
"error_code": "VAL_001",
"errors": [
{"field":"email","code":"email_invalid","message":"Invalid email"},
{"field":"age","code":"min","message":"Must be >= 18"}
]
}
नियम:
  • 400 - 422 में इसे डुप्लिकेट न करें व्यापार सत्यापन के लिए पसंद किया गया।
  • संदेश मानव-पढ़ने योग्य हैं; 'कोड' मशीन-पढ़ने योग्य है।

10) त्रुटि सुरक्षा

कभी नहीं: स्टैक ट्रेस, SQL, फ़ाइल पथ, निजी होस्ट नाम.

PII संपादित करें; GDPR/DSAR पर नजर रखें।

हस्ताक्षर/HMAC के लिए, 'SEC _ SIGNATURE _ MISMATCH' (403) और 'SEC _ TIMESTAMP _ SKEW' (401/403) के बीच अंतर करें।

11) सहसंबंध और अवलोकन

हमेशा 'ट्रेस _ आईडी '/' एक्स-रिक्वेस्ट- आईडी' जोड़ें और लॉग/ट्रैक के माध्यम से स्क्रॉल करें.

'error _ code' और 'status' → डैशबोर्ड "शीर्ष त्रुटियों", "नया बनाम ज्ञात" द्वारा कुल त्रुटियां।

अलर्ट: 5xx/422/429 स्पाइक, p95 विलंबता, त्रुटियों का हिस्सा।

12) gRPC/GraphQL/Webhooks - मैपिंग्स

gRPC ↔ HTTP

जीआरपीसीमूल्यHTTP
'ओके'सफलता200
'अवैध _ ARGUMENT'सत्यापन422/400
'UNAUTHENTICATED'कोई टोकन नहीं401
'अनुमति _ DENIED'कोई अधिकार नहीं403
'नहीं _ FIND'कोई संसाधन नहीं404
'पूर्व _ अस्तित्व'संघर्ष409
'FELED _ PRECONDITIONE'ETag/पूर्व शर्तें412
'रिसोर्स _ EXHAUSTED'कोटा429
'UNAVAILABLE'अनुपलब्ध503
'डेडलाइन _ EXCEEEDEED'टाइमआउट504
'इंटरनल'आंतरिक500

ग्राफ़क्यूएल

परिवहन 200, लेकिन 'त्रुटियां []' अंदर - जोड़ें 'एक्सटेंशन। कोड 'и' ट्रेस _ id '।

"घातक" (प्रमाणीकरण/कोटा) के लिए - एक वास्तविक HTTP 401/403/429 बेहतर है।

वेबहूक

केवल 2xx प्राप्तकर्ताओं को सफल मानें।

घातीय बैक-ऑफ के साथ रेट्राई, 'एक्स-वेबहुक-आईडी', 'एक्स-सिग्नेचर'।

प्राप्तकर्ता से 410 - स्टॉप रिट्रे (समापन बिंदु हटाया)।

13) त्रुटि सत्यापन

'टाइप '/' त्रुटि _ कोड' - स्थिर; नया - केवल जोड़ें।

बॉडी स्कीमा बदलते समय, एपीआई या 'समस्या + जेसन का मामूली संस्करण बढ़ाएं; v = 2 '।

प्रलेखन: कोड तालिका + उदाहरण; चेंजलॉग त्रुटियां।

14) प्रलेखन (OpenAPI टुकड़े)

वैश्विक प्रतिक्रिया

yaml components:
responses:
Problem:
description: Problem Details content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
schemas:
Problem:
type: object required: [type, title, status, error_code, trace_id]
properties:
type: { type: string, format: uri }
title: { type: string }
status: { type: integer }
error_code: { type: string }
detail: { type: string }
instance: { type: string }
trace_id: { type: string }
retriable: { type: boolean }
errors:
type: array items:
type: object properties:
field: { type: string }
code: { type: string }
message: { type: string }

समापन बिंदु का उदाहरण

yaml paths:
/v1/users:
post:
responses:
'201': { description: Created }
'401': { $ref: '#/components/responses/Problem' }
'422': { $ref: '#/components/responses/Problem' }
'429': { $ref: '#/components/responses/Problem' }
'500': { $ref: '#/components/responses/Problem' }

15) परीक्षण और गुणवत्ता

परीक्षण अनुबंध: मैच 'एप्लिकेशन/प्रॉब्लम + json', आवश्यक क्षेत्र।

नकारात्मक परीक्षण: सभी शाखाएँ 401/403/404/ 409/422/429/500।

अराजकता/विलंबता: 5xx/ 503/504/429 ('Retry-After') के लिए रिट्रे की जाँच कर रहा है।

सुरक्षा परीक्षण: कोई आंतरिक संदेश नहीं, पीआईआई मास्क सही करें।

बैकवर्ड-कॉम्पैट: पुराने ग्राहक नए क्षेत्रों को समझते हैं (जोड़ें, टूटें नहीं)।

16) कार्यान्वयन चेकलिस्ट

  • एकल 'समस्या + json' + स्थिर 'त्रुटि _ कोड'।
  • सही HTTP/gRPC/GraphQL शब्दार्थ।
  • पुनर्प्राप्य/गैर-पुनर्प्राप्य + 'रीट्री-आफ्टर '/बैक-ऑफ सिफारिशें।
  • दर-सीमा हेडर और 429 व्यवहार।
  • आइडेम्पोटेंसी ('आइडेम्पोटेंसी-की', 409/412)।
  • सुरक्षा: कोई ढेर निशान/रहस्य, पीआईआई संस्करण नहीं।
  • सभी त्रुटियों में 'ट्रेस _ आईडी '/' एक्स-रिक्वेस्ट-आईडी'.
  • त्रुटि सूची प्रलेखन और उदाहरण।
  • त्रुटि वर्गीकरण द्वारा निगरानी।
  • नकारात्मक परिदृश्यों के ऑटोटेस्ट।

17) मिनी-एफएक्यू

400 422 से कैसे अलग है?

400 - टूटा हुआ अनुरोध (वाक्यविन्यास/सामग्री प्रका 422 - सिंटैक्स में मान्य, लेकिन व्यापार नियम पारित नहीं किया।

401 कब है और 403 कब है?

401 - नहीं/गलत टोकन; 403 - एक टोकन है, वहाँ पर्याप्त अधिकार नहीं हैं।

क्या 'Retry-Afterways' की जरूरत है?

429/503 के लिए, हाँ; बाकी के लिए, पुनर्विचार - एक स्पष्ट सिफारिश देने के लिए उचित है।

कुल

अच्छी तरह से डिज़ाइन किए गए कीड़े अनुबंध हैं: सही HTTP स्थिति, एकल 'समस्या + json', स्थिर 'त्रुटि _ कोड', स्पष्ट रिट्रे संकेत और मजबूत सुरक्षा। प्रारूप को मानकीकृत करें, वर्गीकरण का दस्तावेज़ करें, टेलीमेट्री और परीक्षण जोड़ें - और आपका एपीआई अनुमानित, सुरक्षित और इंटीग्रेटर-फ्रेंडली हो जाता है।

Contact

हमसे संपर्क करें

किसी भी प्रश्न या सहायता के लिए हमसे संपर्क करें।हम हमेशा मदद के लिए तैयार हैं!

Telegram
@Gamble_GC
इंटीग्रेशन शुरू करें

Email — अनिवार्य है। Telegram या WhatsApp — वैकल्पिक हैं।

आपका नाम वैकल्पिक
Email वैकल्पिक
विषय वैकल्पिक
संदेश वैकल्पिक
Telegram वैकल्पिक
@
अगर आप Telegram डालते हैं — तो हम Email के साथ-साथ वहीं भी जवाब देंगे।
WhatsApp वैकल्पिक
फॉर्मैट: देश कोड और नंबर (उदा. +91XXXXXXXXXX)।

बटन दबाकर आप अपने डेटा की प्रोसेसिंग के लिए सहमति देते हैं।