REST APIs इंटरनेट की ज्यादातर इंटीग्रेशंस को शक्ति देती हैं। चाहे आप बैकएंड रोल, फुल-स्टैक पोज़ीशन, या सॉफ्टवेयर इंजीनियरिंग जॉब के लिए अप्लाई कर रहे हों, आपसे REST API डिजाइन, HTTP methods, और authentication पैटर्न्स पर सवाल ज़रूर पूछे जाएंगे।
इस गाइड में, मैं आपको वही सवाल समझाऊंगा जो इंटरव्यूअर वास्तव में पूछते हैं। मैंने इन्हें कठिनाई स्तर और रोल-टाइप के आधार पर व्यवस्थित किया है ताकि आप अपने लक्ष्य पद के लिए सबसे ज़रूरी चीज़ों पर फोकस कर सकें। हर उत्तर में व्यावहारिक उदाहरण और जहाँ ज़रूरी हो, ऐसे कोड स्निपेट शामिल हैं जिन्हें आप अपना सकते हैं।
एक बात ध्यान में रखें: इंटरव्यूअर उन्नत विषयों की तुलना में बुनियादी सिद्धांतों का कहीं ज़्यादा परीक्षण करते हैं। अगर आप बेसिक्स (HTTP methods, status codes, statelessness) में निपुण हैं, तो अधिकतर REST API इंटरव्यू आप आत्मविश्वास से संभाल लेंगे। जटिल आर्किटेक्चरल पैटर्न बाद में आते हैं।
बेसिक REST API इंटरव्यू प्रश्न
ये प्रश्न आपकी नींव की समझ को परखते हैं। इन्हें लगभग हर इंटरव्यू में, सिनियॉरिटी स्तर की परवाह किए बिना, अपेक्षित मानें।
1. REST क्या है और इसकी बाध्यताएँ (constraints) क्या हैं?
REST का अर्थ है Representational State Transfer। यह नेटवर्क्ड एप्लिकेशंस को डिज़ाइन करने की एक आर्किटेक्चरल शैली है, जिसे Roy Fielding ने 2000 की अपनी डॉक्टोरल थीसिस में परिभाषित किया था।
REST में छह constraints होती हैं:
Client-Server: यूज़र इंटरफ़ेस और डेटा स्टोरेज के बीच दायित्वों का पृथक्करण
Stateless: हर रिक्वेस्ट में उसे पूरा करने के लिए आवश्यक सभी जानकारी होनी चाहिए
Cacheable: रेस्पॉन्स यह बताएं कि वे कैश किए जा सकते हैं या नहीं
Layered System: कंपोनेंट्स अपनी तात्कालिक लेयर से आगे नहीं देख सकें
Uniform Interface: रिसोर्स के साथ इंटरैक्ट करने का मानकीकृत तरीका
Code-on-Demand (वैकल्पिक): सर्वर क्लाइंट्स को executable कोड भेज सकते हैं
2. REST और SOAP में क्या अंतर है?
REST एक आर्किटेक्चरल शैली है; SOAP एक प्रोटोकॉल। REST आमतौर पर HTTP पर JSON का उपयोग करता है और मानक HTTP methods का लाभ उठाता है। SOAP विशेष रूप से XML का उपयोग करता है और अपने लिफ़ाफ़ों और हेडर्स के साथ अपना मैसेजिंग फॉर्मेट परिभाषित करता है।
पहलू
REST
SOAP
फ़ॉर्मेट
JSON, XML, अन्य
केवल XML
ट्रांसपोर्ट
HTTP
HTTP, SMTP, अन्य
कैशिंग
नेटिव HTTP कैशिंग
कैश योग्य नहीं
परफॉर्मेंस
हल्का-फुल्का
ज़्यादा ओवरहेड
एंटरप्राइज़ सिस्टम्स जिनमें औपचारिक कॉन्ट्रैक्ट्स (WSDL) या मैसेज-लेवल सिक्योरिटी (WS-Security) की ज़रूरत होती है, उनके लिए SOAP अब भी समझदारी हो सकती है।
3. HTTP methods क्या हैं और किसे कब उपयोग करें?
HTTP methods किसी रिसोर्स पर की जाने वाली क्रिया को परिभाषित करते हैं।
Method
उद्देश्य
उदाहरण
GET
किसी रिसोर्स को प्राप्त करना
GET /users/123
POST
नया रिसोर्स बनाना
POST /users
PUT
पूरे रिसोर्स को बदलना
PUT /users/123
PATCH
रिसोर्स को आंशिक रूप से अपडेट करना
PATCH /users/123
DELETE
किसी रिसोर्स को हटाना
DELETE /users/123
4. PUT और POST में क्या अंतर है?
POST एक नया रिसोर्स बनाता है जहाँ सर्वर URI तय करता है। PUT क्लाइंट द्वारा दिए गए विशिष्ट URI पर रिसोर्स को बदल देता है।
POST /users → Server creates user, returns /users/123
PUT /users/123 → Client specifies URI, replaces entire resourceसंचालित द्वारा
यदि आप किसी ऐसे URI पर PUT करें जो मौजूद नहीं है, तो सर्वर उसे बना सकता है। यदि आप मौजूदा URI पर PUT करें, तो आप पूरे रिसोर्स को बदल देते हैं।
5. PUT और PATCH में क्या अंतर है?
PUT पूरे रिसोर्स को बदलता है। PATCH आंशिक बदलाव लागू करता है।
# PUT replaces everything
PUT /users/123{"name":"Khalid","email":"[email protected]","role":"admin"}# PATCH updates only specified fields
PATCH /users/123{"role":"admin"}संचालित द्वारा
6. REST में "stateless" का क्या अर्थ है?
Stateless का अर्थ है कि हर रिक्वेस्ट में वह सारी जानकारी होनी चाहिए जिसकी सर्वर को उसे प्रोसेस करने के लिए ज़रूरत है। सर्वर रिक्वेस्ट्स के बीच कोई क्लाइंट कॉन्टेक्स्ट स्टोर नहीं करता।
इसका मतलब है सर्वर-साइड सेशन्स नहीं। यदि कोई यूज़र प्रमाणीकृत है, तो क्लाइंट को हर रिक्वेस्ट के साथ प्रमाण-पत्र (आमतौर पर एक टोकन) भेजना होगा।
7. किसी API को RESTful क्या बनाता है?
API तभी सचमुच RESTful होता है जब वह सभी REST constraints को पूरा करता है, जिनमें HATEOAS (Hypermedia as the Engine of Application State) शामिल है। व्यवहार में, ज्यादातर API जो खुद को "REST" कहते हैं, वास्तव में "REST-like" या Richardson Maturity Model के Level 2 पर होते हैं। और सच कहें, तो अधिकतर उपयोग मामलों के लिए यह पर्याप्त होता है।
REST APIs के लिए Richardson Maturity Model के स्तर। छवि: लेखक।
8. वे बुनियादी HTTP status codes कौन-से हैं जिन्हें आपको पता होना चाहिए?
आपको कम-से-कम ये सात आवश्यक status codes पता होने चाहिए, जो अधिकतर API परिदृश्यों को कवर करते हैं:
Code
नाम
कब उपयोग करें
200
OK
सफल GET, PUT, PATCH
201
Created
सफल POST (Location हेडर शामिल करें)
204
No Content
सफल DELETE
400
Bad Request
गलत ढांचा (malformed syntax)
404
Not Found
रिसोर्स मौजूद नहीं
500
Internal Server Error
सर्वर-साइड विफलता
9. रिसोर्स और एंडपॉइंट में क्या अंतर है?
रिसोर्स डेटा एंटिटी है (यूज़र, ऑर्डर, प्रोडक्ट)। एंडपॉइंट वह URL पाथ है जो उस रिसोर्स तक पहुँच देता है।
Resource: User
Endpoints: GET /users, GET /users/123, POST /usersसंचालित द्वारा
10. URI डिजाइन के लिए सर्वोत्तम प्रथाएँ क्या हैं?
क्रियाओं (verbs) नहीं, संज्ञाओं (nouns) का उपयोग करें। URI लोअरकेस रखें और बहु-शब्द नामों के लिए हाइफ़न का उपयोग करें। कलेक्शंस के लिए बहुवचन संज्ञाएँ रखें।
Good: /users, /users/123, /order-items
Bad: /getUsers, /Users, /order_itemsसंचालित द्वारा
गहरी nesting से बचें। /users/123/posts/456/comments/789 की बजाय /comments/789 या /comments?post_id=456 पर विचार करें।
11. Idempotency क्या है और कौन-से HTTP methods idempotent हैं?
यदि किसी ऑपरेशन को कई बार करने पर वही परिणाम मिले जो एक बार करने पर मिलता है, तो वह idempotent है।
Method
Idempotent
क्यों
GET
हाँ
रीड करने से स्टेट नहीं बदलता
PUT
हाँ
उसी डेटा से बदलने पर परिणाम समान
DELETE
हाँ
दो बार डिलीट करने पर भी रिसोर्स डिलीट ही रहता है
POST
नहीं
दो बार बनाने पर दो रिसोर्स बनते हैं
PATCH
नहीं*
ऑपरेशन पर निर्भर
जो PATCH किसी मान को सेट करता है, वह idempotent है; जो PATCH काउंटर को इन्क्रिमेंट करता है, वह नहीं।
12. Safe और idempotent methods में क्या अंतर है?
Safe methods रिसोर्स को मॉडिफाई नहीं करते (GET, HEAD, OPTIONS)। Idempotent methods को कई बार कॉल करने पर समान प्रभाव रहता है (GET, PUT, DELETE)।
सभी safe methods idempotent हैं, पर सभी idempotent methods safe नहीं हैं। DELETE idempotent है पर safe नहीं, क्योंकि यह स्टेट बदलता है।
13. Query parameters और path parameters कब उपयोग करने चाहिए?
Path parameters किसी विशिष्ट रिसोर्स की पहचान करते हैं। Query parameters कलेक्शंस को फ़िल्टर, सॉर्ट या paginate करते हैं।
Path: /users/123 (specific user)
Query: /users?status=active (filtered collection)
/users?sort=name&limit=10संचालित द्वारा
14. Content negotiation क्या है?
Content negotiation क्लाइंट्स को किसी रिसोर्स के अलग-अलग प्रतिनिधित्व माँगने देता है। क्लाइंट Accept हेडर भेजता है, और सर्वर उपयुक्त फॉर्मेट में जवाब देता है।
Accept: application/json → Server returns JSON
Accept: application/xml → Server returns XMLसंचालित द्वारा
15. OPTIONS method का उद्देश्य क्या है?
OPTIONS किसी विशिष्ट URL के लिए सर्वर किन HTTP methods को सपोर्ट करता है, यह लौटाता है। ब्राउज़र CORS preflight के लिए इसका उपयोग करते हैं ताकि यह जाँचा जा सके कि cross-origin रिक्वेस्ट्स की अनुमति है या नहीं।
इंटरमीडिएट REST API इंटरव्यू प्रश्न
ये प्रश्न व्यावहारिक उपयोग और निर्णय-क्षमता को परखते हैं। मिड-लेवल पदों के लिए इन्हें अपेक्षित मानें।
16. 401 और 403 में क्या अंतर है?
यह status codes की सबसे आम उलझन है। मैंने सीनियर इंजीनियर्स को भी कोड रिव्यू में इन्हें मिलाते देखा है।
401 Unauthorized
मतलब unauthenticated। सर्वर नहीं जानता कि आप कौन हैं। आपका रेस्पॉन्स यूज़र को लॉगिन के लिए प्रेरित करना चाहिए।
403 Forbidden
मतलब unauthorized। सर्वर जानता है कि आप कौन हैं, पर आपके पास अनुमति नहीं है। दोबारा authenticate करने से मदद नहीं मिलेगी।
प्रमाणीकरण बनाम अधिकृत-प्रवेश (authorization) त्रुटि निर्णय फ़्लोचार्ट। छवि: लेखक।
17. 400 और 422 में क्या अंतर है?
अंतर को दर्शाने के लिए उदाहरण:
400 Bad Request
यह गलत सिंटैक्स को दर्शाता है। सर्वर रिक्वेस्ट को पार्स नहीं कर सकता (अमान्य JSON संरचना, आवश्यक हेडर्स गायब)।
422 Unprocessable Entity
यह वैध सिंटैक्स लेकिन अर्थगत त्रुटियों को दर्शाता है। JSON वैध है पर डेटा वैलिडेशन में फेल (अमान्य ईमेल फॉर्मेट, बहुत छोटा पासवर्ड)।
ETag किसी रिसोर्स के लिए एक वर्ज़न पहचानकर्ता है। सर्वर इसे रेस्पॉन्स में भेजता है; क्लाइंट बाद की रिक्वेस्ट्स में वापस भेजता है ताकि पता चल सके कि रिसोर्स बदला है या नहीं।
# First request
GET /users/123
Response: ETag: "abc123"
# Subsequent request
GET /users/123
If-None-Match: "abc123"
Response: 304 Not Modified (if unchanged)संचालित द्वारा
22. REST APIs के लिए कौन-सी authentication विधियाँ उपयोग होती हैं?
चार सबसे आम विधियाँ हैं: API Keys, Bearer Tokens, OAuth 2.0, और JWT:
सर्वर टोकन पर हस्ताक्षर करता है; क्लाइंट्स इसे रिक्वेस्ट्स के साथ भेजते हैं। सर्वर बिना डेटाबेस लुकअप के सिग्नेचर को वैलिडेट करता है।
24. RS256 और HS256 में क्या अंतर है?
HS256 (सिमेट्रिक): वही सीक्रेट साइन और वेरिफाई करता है। जोखिम तब बढ़ता है जब कई सेवाओं को टोकन वेरिफाई करने हों।
RS256 (असिमेट्रिक): प्राइवेट की साइन करती है, पब्लिक की वेरिफाई करती है। वितरित सिस्टम्स के लिए अनुशंसित जहाँ कई सेवाएँ टोकन वैलिडेट करती हैं।
25. HATEOAS क्या है?
HATEOAS (Hypermedia as the Engine of Application State) का मतलब है कि रेस्पॉन्स में संबंधित क्रियाओं और रिसोर्सेज़ के लिंक शामिल हों।
{"id":123,"name":"Khalid","links":[{"rel":"self","href":"/users/123"},{"rel":"orders","href":"/users/123/orders"}]}संचालित द्वारा
व्यवहार में, अधिकतर APIs HATEOAS को पूरी तरह लागू नहीं करतीं। अवधारणा जानें, पर अधिकांश नौकरियों में इसे पूर्ण रूप से लागू करने की अपेक्षा न रखें। बड़ी टेक कंपनियाँ भी शायद ही कभी पूरी तरह HATEOAS-अनुपालक APIs बनाती हैं।
26. आप त्रुटियों (errors) को लगातार तरीके से कैसे संभालते हैं?
सुसंगत error रेस्पॉन्सेस के लिए RFC 7807 Problem Details फॉर्मेट का उपयोग करें:
{"type":"https://api.example.com/errors/validation","title":"Validation Error","status":422,"detail":"Email format is invalid","instance":"/users"}संचालित द्वारा
27. Rate limiting क्या है और यह महत्वपूर्ण क्यों है?
Rate limiting आपके API को दुरुपयोग से बचाता है और निष्पक्ष उपयोग सुनिश्चित करता है। सामान्य रेस्पॉन्स:
HTTP/1.1 429 Too Many Requests
Retry-After: 3600
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 0संचालित द्वारा
28. आप फ़िल्टरिंग और सॉर्टिंग कैसे डिज़ाइन करते हैं?
स्पष्ट कन्वेंशन्स के साथ query parameters का उपयोग करें:
# Filtering
GET /products?category=electronics&price[gte]=100&price[lte]=500
# Sorting (prefix - for descending)
GET /users?sort=-created_at,nameसंचालित द्वारा
एडवांस्ड REST API इंटरव्यू प्रश्न
ये प्रश्न आर्किटेक्चरल सोच को परखते हैं। सीनियर पदों के लिए अपेक्षित मानें।
29. OAuth 2.0 और OAuth 2.1 में क्या बदला?
OAuth 2.1 सुरक्षा से जुड़ी श्रेष्ठ प्रथाओं को समेकित करता है:
फ़ीचर
OAuth 2.0
OAuth 2.1
PKCE
वैकल्पिक
सभी क्लाइंट्स के लिए अनिवार्य
Implicit Grant
समर्थित
हटा दिया गया
Password Grant
समर्थित
हटा दिया गया
Redirect URI
लचीला मिलान
सटीक मिलान आवश्यक
मुख्य निष्कर्ष: सभी क्लाइंट प्रकारों के लिए Authorization Code flow के साथ PKCE का उपयोग करें।
30. पेमेंट एंडपॉइंट्स के लिए idempotency कैसे लागू करेंगे?
POST रिक्वेस्ट्स को रिट्राइज़ के लिए सुरक्षित बनाने हेतु idempotency keys का उपयोग करें:
asyncdefhandle_payment(request: Request, payment: PaymentCreate):
idempotency_key = request.headers.get("Idempotency-Key")# Check if already processed
cached =await redis.get(f"idem:{idempotency_key}")if cached:return JSONResponse(json.loads(cached))# Process payment
result =await process_payment(payment)# Cache result (24-hour TTL)await redis.setex(f"idem:{idempotency_key}",86400, json.dumps(result))return resultसंचालित द्वारा
क्लाइंट एक UUID जनरेट करता है और रिक्वेस्ट के साथ भेजता है। यदि वही key दोबारा आए, तो cached रेस्पॉन्स लौटा दें।
31. आप एक वितरित rate limiter कैसे डिज़ाइन करेंगे?
डिस्ट्रिब्यूटेड सिस्टम्स के लिए आप इन-मैमोरी काउंटर्स का उपयोग नहीं कर सकते क्योंकि ट्रैफिक लोड-बैलेंस होकर कई इंस्टेंसेज़ में बँटा होता है। यह एक आम गलती है जो उम्मीदवारों को उलझा देती है।
आर्किटेक्चर:
केंद्रीकृत काउंटर स्टोरेज के लिए Redis का उपयोग करें
बर्स्ट सहनशीलता हेतु Token Bucket एल्गोरिद्म लागू करें
रेस कंडीशन्स से बचने के लिए एटॉमिक ऑपरेशन्स (Lua स्क्रिप्ट्स) उपयोग करें
# Pseudocode for Token Bucket
tokens = redis.get(user_id)or max_tokens
if tokens >0:
redis.decr(user_id)
process_request()else:return429संचालित द्वारा
32. आप gRPC को REST पर कब चुनेंगे?
gRPC और REST के बीच चुनाव आपकी विशिष्ट आवश्यकताओं पर निर्भर करता है।
33. लंबी अवधि चलने वाले ऑपरेशन्स को कैसे संभालते हैं?
असिंक्रोनस रिक्वेस्ट पैटर्न का उपयोग करें:
क्लाइंट रिक्वेस्ट भेजता है
सर्वर 202 Accepted के साथ एक स्टेटस URL लौटाता है
क्लाइंट पूर्णता तक स्टेटस URL को पोल करता है
POST /reports
Response: 202 Accepted
Location: /reports/abc123/status
GET /reports/abc123/status
Response: {"status": "processing", "progress": 45}
GET /reports/abc123/status
Response: {"status": "completed", "result_url": "/reports/abc123"}संचालित द्वारा
34. Saga पैटर्न क्या है?
Saga माइक्रोसर्विसेज़ में बिना लॉकिंग के वितरित ट्रांज़ैक्शंस को संभालता है। हर सर्विस एक लोकल ट्रांज़ैक्शन चलाती है और एक इवेंट प्रकाशित करती है। यदि कोई स्टेप असफल हो, तो पिछली स्टेप्स को पूर्ववत करने के लिए compensating ट्रांज़ैक्शंस चलते हैं।
Order Created → Payment Processed → Inventory Reserved → Order Confirmed
↓ (failure)
Release Payment → Cancel Orderसंचालित द्वारा
35. सामान्य JWT सुरक्षा कमज़ोरियाँ कौन-सी हैं?
Algorithm confusion: अटैकर RS256 को HS256 में बदल देता है और पब्लिक की से साइन करता है। समाधान: हमेशा एल्गोरिद्म्स को whitelist करें।
# Vulnerable
jwt.decode(token, key)# Secure
jwt.decode(token, key, algorithms=["RS256"])संचालित द्वारा
"none" एल्गोरिद्म: अटैकर सिग्नेचर पूरी तरह हटा देता है। समाधान: "none" एल्गोरिद्म को अस्वीकार करें।
बैकएंड डेवलपर REST API प्रश्न
ये प्रश्न सर्वर-साइड इम्प्लीमेंटेशन डिटेल्स, डेटाबेस ऑप्टिमाइज़ेशन, और परफॉर्मेंस पैटर्न्स पर केंद्रित हैं जिनका बैकएंड इंजीनियर्स रोज़ सामना करते हैं।
36. N+1 क्वेरी समस्या क्या है?
N+1 समस्या तब होती है जब आप N रिकॉर्ड्स फेच करते हैं और प्रत्येक रिकॉर्ड के रिलेशनशिप के लिए अलग क्वेरी चलाते हैं।
# N+1 Problem: 101 queries for 100 users
users = User.query.all()# 1 queryfor user in users:print(user.posts)# 100 queriesसंचालित द्वारा
समाधान:
Django: फॉरेन कीज़ के लिए select_related(), और many-to-many के लिए prefetch_related() का उपयोग करें।
# 2 queries instead of 101
users = User.objects.prefetch_related('posts').all()संचालित द्वारा
SQLAlchemy: joinedload() या selectinload() का उपयोग करें।
37. आप connection pooling कैसे कॉन्फ़िगर करते हैं?
Connection pooling हर रिक्वेस्ट पर नई कनेक्शन बनाने के बजाय डेटाबेस कनेक्शंस को पुन: उपयोग करता है।
# SQLAlchemy
engine = create_engine("postgresql://user:pass@host/db",
pool_size=5,# Permanent connections
max_overflow=10,# Temporary overflow
pool_timeout=30,# Wait timeout
pool_pre_ping=True# Validate before use)संचालित द्वारा
38. आप कौन-सी कैशिंग स्ट्रैटेजीज़ जानते हैं?
तीन प्राथमिक कैशिंग स्ट्रैटेजीज़ हैं, जो अलग-अलग एक्सेस पैटर्न्स के लिए अनुकूलित हैं:
स्ट्रैटेजी
विवरण
उपयोग मामला
Cache-Aside
एप पहले कैश, फिर DB जाँचता है
रीड-हेवी, थोड़ी staleness स्वीकार्य
Write-Through
कैश और DB में साथ-साथ लिखना
कंसिस्टेंसी अहम
Write-Behind
पहले कैश में लिखना, DB को असिंक्रोनस अपडेट
उच्च write थ्रूपुट
39. आप webhook signature verification कैसे लागू करते हैं?
Webhook signature verification सुनिश्चित करता है कि रिक्वेस्ट अपेक्षित सेंडर से ही आई है। यहाँ HMAC का उपयोग करते हुए एक इम्प्लीमेंटेशन है:
API की सेहत जाँचने के लिए आपको ये चार प्रमुख मेट्रिक्स मॉनिटर करने चाहिए:
मेट्रिक
विवरण
अलर्ट थ्रेशहोल्ड
P50 Latency
मीडियन रेस्पॉन्स समय
बेसलाइन
P99 Latency
सबसे धीमे 1%
> 2s पाँच मिनट के लिए
Error Rate
4xx/5xx का %
> 1% पाँच मिनट के लिए
Throughput
प्रति सेकंड रिक्वेस्ट्स
क्षमता योजना (capacity planning)
फुल स्टैक डेवलपर REST API प्रश्न
ये प्रश्न क्लाइंट और सर्वर दोनों चिंताओं की आपकी समझ को परखते हैं, विशेषकर ब्राउज़र सुरक्षा, स्टेट मैनेजमेंट, और cross-origin संचार।
41. ब्राउज़र CORS preflight रिक्वेस्ट कब भेजता है?
ब्राउज़र OPTIONS preflight भेजते हैं जब:
GET, HEAD, POST के अलावा अन्य methods हों
कस्टम हेडर्स हों (Authorization, X-API-Key)
Content-Type form-urlencoded, multipart/form-data, text/plain के अलावा हो
42. आप CORS को सुरक्षित रूप से कैसे कॉन्फ़िगर करते हैं?
सुरक्षित CORS कॉन्फ़िगरेशन के लिए origins को स्पष्ट रूप से whitelist करना और credentials को सावधानी से संभालना ज़रूरी है। यहाँ एक सुरक्षित Express.js सेटअप है:
// Express.js
app.use(cors({origin:['https://yourdomain.com'],// Never use * with credentialscredentials:true,methods:['GET','POST','PUT','DELETE'],allowedHeaders:['Content-Type','Authorization']}));संचालित द्वारा
credentials के साथ कभी भी वाइल्डकार्ड (*) का उपयोग न करें। null origin की अनुमति कभी न दें।
43. क्लाइंट पर टोकन कहाँ स्टोर करने चाहिए?
टोकन स्टोरेज में XSS और CSRF कमजोरियों के बीच सुरक्षा trade-offs होते हैं"
स्टोरेज
XSS जोखिम
CSRFजोखिम
सिफारिश
localStorage
उच्च
शून्य
टोकन्स के लिए न उपयोग करें
HttpOnly Cookie
कम
रोकथाम आवश्यक
अनुशंसित
इन-मैमोरी
कम
कम
ऐक्सेस टोकन्स के लिए सर्वोत्तम
श्रेष्ठ अभ्यास: रिफ्रेश टोकन्स को HttpOnly कुकीज़ में SameSite=Strict के साथ स्टोर करें। ऐक्सेस टोकन्स को मेमोरी में रखें।
44. WebSockets बनाम SSE कब उपयोग करने चाहिए?
चयन इस पर निर्भर करता है कि आपको दो-तरफ़ा संचार चाहिए या नहीं और आप reconnection कैसे संभालना चाहते हैं:
फ़ीचर
WebSockets
SSE
दिशा
दो-तरफ़ा
सर्वर से क्लाइंट
पुन: कनेक्शन
मैनुअल
स्वचालित
बाइनरी डेटा
हाँ
नहीं
नोटिफिकेशंस, लाइव फ़ीड्स, स्टॉक टिकर्स के लिए SSE का उपयोग करें। चैट, मल्टीप्लेयर गेम्स, collaborative एडिटिंग के लिए WebSockets का उपयोग करें।
45. आप फ़ाइल अपलोड्स कैसे संभालते हैं?
बड़ी फ़ाइलों के लिए, प्रोग्रेस ट्रैकिंग के साथ chunked अपलोड्स का उपयोग करें:
asyncfunctionchunkedUpload(file, chunkSize =5*1024*1024){const totalChunks = Math.ceil(file.size / chunkSize);for(let i =0; i < totalChunks; i++){const chunk = file.slice(i * chunkSize,(i +1)* chunkSize);awaituploadChunk(uploadId, i, chunk);}}संचालित द्वारा
परिदृश्य-आधारित REST API प्रश्न
ये प्रश्न इस बात का आकलन करते हैं कि आप वास्तविक समस्याओं पर REST सिद्धांतों को कैसे लागू करते हैं। इंटरव्यूअर आपके डिजाइनिंग प्रोसेस और आर्किटेक्चरल trade-offs को कैसे संतुलित करते हैं, यह देखना चाहते हैं।
46. एक होटल बुकिंग सिस्टम के लिए REST API डिज़ाइन करें
होटल बुकिंग सिस्टम को सर्च, उपलब्धता जाँच, और आरक्षण को संभालना होता है, साथ ही डबल-बुकिंग रोकनी होती है। यहाँ कोर रिसोर्सेज़ हैं:
रिसोर्सेज़:
/hotels - होटलों की सूची और सर्च
/hotels/{id}/rooms - उपलब्ध कमरे
/bookings - बुकिंग बनाना और मैनेज करना
/guests/{id} - गेस्ट प्रोफाइल्स
मुख्य निर्णय:
होटल सर्च के लिए cursor-आधारित pagination का उपयोग करें
रूम उपलब्धता के लिए optimistic locking लागू करें
डबल-बुकिंग प्रयासों के लिए 409 Conflict लौटाएँ
पेमेंट प्रोसेसिंग के लिए idempotency keys का उपयोग करें
47. आप soft deletes कैसे लागू करेंगे?
रिकॉर्ड्स हटाने के बजाय deleted_atटाइमस्टैम्प जोड़ें:
@app.delete("/users/{user_id}")defdelete_user(user_id:int):
user = db.get(user_id)
user.deleted_at = datetime.utcnow()
db.commit()return Response(status_code=204)@app.get("/users")deflist_users(include_deleted:bool=False):
query = User.query
ifnot include_deleted:
query = query.filter(User.deleted_at.is_(None))return query.all()संचालित द्वारा
48. आप v1 से v2 में बिना क्लाइंट्स को तोड़े कैसे माइग्रेट करेंगे?
Strangler Fig पैटर्न का उपयोग करें:
v2 को v1 के साथ-साथ डिप्लॉय करें
नई सुविधाओं को v2 पर रूट करें
मौजूदा एंडपॉइंट्स को धीरे-धीरे माइग्रेट करें
Sunset हेडर के माध्यम से deprecation कम्युनिकेट करें
माइग्रेशन अवधि के बाद v1 हटा दें
49. आप जटिल फ़िल्टरिंग के साथ सर्च API कैसे डिज़ाइन करेंगे?
कई फ़िल्टर्स वाले प्रोडक्ट सर्च के लिए:
GET /products?q=laptop&category=electronics&price[gte]=500&price[lte]=2000&brand=apple,dell&in_stock=true&sort=-rating&limit=20&cursor=abc123संचालित द्वारा
डिज़ाइन निर्णय:
फुल-टेक्स्ट सर्च के लिए Elasticsearch उपयोग करें (रिलेशनल DB फज़ी मैचिंग में संघर्ष करती हैं)
उपलब्ध फ़िल्टर विकल्प दिखाने हेतु faceted सर्च लागू करें
फ़िल्टर काउंट्स लौटाएँ ताकि यूज़र्स जान सकें हर फ़िल्टर कितने परिणाम देता है
लोकप्रिय सर्च संयोजनों को कैश करें
50. माइक्रोसर्विस आर्किटेक्चर में आप API versioning कैसे संभालते हैं?
विकल्प:
गेटवे-लेवल वर्ज़निंग: API गेटवे /v1/* को पुरानी सेवाओं पर, और /v2/*को नई सेवाओं पर रूट करता है
सर्विस-लेवल वर्ज़निंग: प्रत्येक सर्विस अपना वर्ज़न नेगोशिएशन स्वयं संभालती है
कंज़्यूमर-ड्रिवन कॉन्ट्रैक्ट्स: Pact या समान टूल्स का उपयोग कर संगतता सुनिश्चित करें
अधिकतर टीमों के लिए, गेटवे-लेवल वर्ज़निंग सबसे साफ़ विभाजन प्रदान करती है।
51. अलग-अलग यूज़र टियर्स के लिए आप rate limiting कैसे लागू करेंगे?
समाधान में टियर-विशिष्ट लिमिट्स परिभाषित करना और उन्हें Redis काउंटर्स के जरिए जाँचना शामिल है:
ये प्रश्न आपकी संचार क्षमता और यह परखते हैं कि आप वास्तविक API चुनौतियों को कैसे संभालते हैं। अपने समस्या-समाधान प्रोसेस और स्टेकहोल्डर्स के साथ काम करने के तरीके को प्रदर्शित करने पर फोकस करें।
52. किसी गैर-तकनीकी व्यक्ति को REST समझाएँ
"REST API को एक रेस्टोरेंट के वेटर की तरह समझें। आप (ग्राहक) सीधे किचन में नहीं जा सकते। इसके बजाय, आप वेटर को मेन्यू से बताते हैं कि आपको क्या चाहिए, और वह आपको लाकर देता है। मेन्यू API डॉक्यूमेंटेशन जैसा है, जो बताता है कि आप क्या ऑर्डर कर सकते हैं। वेटर कुछ नियमों का पालन करता है: आप कुछ माँगते हैं (GET), कुछ नया ऑर्डर करते हैं (POST), या कुछ वापस भेजते हैं (DELETE)। अगर किचन में कुछ नहीं है, तो वेटर आपको बता देता है (404 Not Found) ताकि आप बेवजह इंतज़ार न करें।"
यह उपमा स्टेकहोल्डर मीटिंग्स में आश्चर्यजनक रूप से अच्छी तरह काम करती है।
53. वह समय बताइए जब आपने किसी API को ऑप्टिमाइज़ किया
STAR विधि का उपयोग करें:
स्थिति: "हमारे सर्च API को पीक ट्रैफिक में 3-सेकंड का रेस्पॉन्स टाइम लग रहा था"
कार्य: "मुझे बड़े आर्किटेक्चर बदलाव के बिना लेटेंसी कम करनी थी"
कार्रवाई: "मैंने बार-बार होने वाली क्वेरीज़ के लिए Redis कैशिंग जोड़ी, cursor-आधारित pagination लागू की, और डेटाबेस इंडेक्सेस ऐड किए"
परिणाम: "रेस्पॉन्स टाइम 200ms पर आ गया, और हमने 5x अधिक ट्रैफिक हैंडल किया"
54. आप API consumers को breaking changes कैसे कम्युनिकेट करते हैं?
जल्दी घोषणा करें: बड़े बदलावों के लिए कम-से-कम 6-12 महीनों का नोटिस दें
Sunset हेडर उपयोग करें: Sunset: Sat, 31 Dec 2026 23:59:59 GMT
माइग्रेशन गाइड्स दें: क्या बदला और कैसे अनुकूलित करें, यह स्पष्ट डॉक्यूमेंट करें
दोनों वर्ज़न्स चलाएँ: ट्रांज़िशन के दौरान पुराना वर्ज़न चालू रखें
उपयोग मॉनिटर करें: कौन-से क्लाइंट अब भी पुराने वर्ज़न पर हैं, इसे ट्रैक करें
55. आप APIs के लिए कौन-सी डॉक्यूमेंटेशन बनाते हैं?
आवश्यक डॉक्यूमेंटेशन में शामिल हैं:
OpenAPI/Swagger स्पेक: मशीन-पठनीय कॉन्ट्रैक्ट
Getting started गाइड: पाँच मिनट में पहला API कॉल
Authentication गाइड: क्रेडेंशियल्स कैसे प्राप्त और उपयोग करें
एरर रेफरेंस: सभी संभावित एरर कोड्स और उनका समाधान
Changelog: प्रत्येक वर्ज़न में क्या बदला
Rate limit डॉक्यूमेंटेशन: प्रति टियर लिमिट्स और 429 को कैसे हैंडल करें
56. आप कब REST का उपयोग नहीं करेंगे?
REST हमेशा सही विकल्प नहीं होता। विकल्पों का समय पर चयन करना आर्किटेक्चरल परिपक्वता दिखाता है। मैंने टीमों को ऐसे उपयोग मामलों में REST को ठूँसते देखा है जहाँ यह समस्याएँ बढ़ाता है।
इस सेक्शन का उपयोग त्वरित लुकअप के रूप में करें जब भी आपको इंटरव्यू तैयारी या वास्तविक डेवलपमेंट के दौरान HTTP method प्रॉपर्टीज़, status codes, या सामान्य पैटर्न की पुष्टि करनी हो।
HTTP Methods तुलना
यह तालिका प्रत्येक HTTP method की मुख्य विशेषताओं का सार प्रस्तुत करती है, जो आपको अपने उपयोग मामले के लिए सही विकल्प चुनने में मदद करती है।
Method
Safe
Idempotent
Cacheable
सामान्य उपयोग
GET
हाँ
हाँ
हाँ
रिसोर्स प्राप्त करना
POST
नहीं
नहीं
शर्तीय
रिसोर्स बनाना
PUT
नहीं
हाँ
नहीं
रिसोर्स बदलना
PATCH
नहीं
नहीं
शर्तीय
आंशिक अपडेट
DELETE
नहीं
हाँ
नहीं
रिसोर्स हटाना
HEAD
हाँ
हाँ
हाँ
केवल हेडर्स प्राप्त करना
OPTIONS
हाँ
हाँ
नहीं
CORS preflight
Status Codes संदर्भ
यहाँ सबसे आम HTTP status codes श्रेणी अनुसार दिए गए हैं। पूरी स्पेसिफिकेशन याद रखने के बजाय यह समझना अधिक महत्वपूर्ण है कि किसे कब उपयोग करना है।
2xx सफलता
200 OK: सफल GET, PUT, PATCH
201 Created: सफल POST (Location हेडर शामिल करें)
204 No Content: सफल DELETE
4xx क्लाइंट त्रुटियाँ
400 Bad Request: गलत सिंटैक्स
401 Unauthorized: प्रमाणीकरण आवश्यक
403 Forbidden: authenticated पर अधिकृत नहीं
404 Not Found: रिसोर्स मौजूद नहीं
409 Conflict: स्टेट संघर्ष
422 Unprocessable Entity: वैलिडेशन एरर
429 Too Many Requests: रेट लिमिटेड
5xx सर्वर त्रुटियाँ
500 Internal Server Error: सामान्य सर्वर विफलता
502 Bad Gateway: अपस्ट्रीम सर्वर त्रुटि
503 Service Unavailable: अस्थायी रूप से ओवरलोडेड
सामान्य गलतियाँ जिनसे बचें
अनुभवी डेवलपर्स भी इन जालों में फँस जाते हैं। REST APIs डिज़ाइन या लागू करते समय इन सामान्य गलतियों से सावधान रहें:
URLs में verbs का उपयोग (जैसे /getUsers की जगह /users)
एरर स्टेट्स के लिए 200 OK लौटाना, जिससे क्लाइंट-साइड एरर हैंडलिंग टूटती है
401 और 403 में भ्रम (Authentication बनाम Authorization)
URLs को अत्यधिक नेस्ट करना दो स्तर से ज़्यादा
localStorage में टोकन्स स्टोर करना (XSS कमजोरियाँ पैदा करता है)
POST रिक्वेस्ट्स के लिए idempotency की अनदेखी
कार्रवाई योग्य विवरणों के बिना सामान्य एरर संदेश लौटाना
निष्कर्ष
मैं मानता हूँ कि परिभाषाएँ रट लेना हर तकनीकी इंटरव्यू पास कराने की गारंटी नहीं है। वास्तविकता यह है कि प्रोडक्शन इंजीनियरिंग में हम अक्सर उन "कड़े" नियमों को तोड़ते हैं जिन पर अभी चर्चा हुई, और इंटरव्यूअर आपकी तर्क-क्षमता को आपकी RFC स्पेसिफिकेशंस सुनाने की क्षमता से अधिक महत्व देते हैं। अत्यधिक विशिष्ट भूमिकाओं में, गहरे डोमेन ज्ञान या किसी विशेष फ्रेमवर्क की विशेषज्ञता निर्णायक कारक हो सकती है।
लेकिन इन REST मूलभूतों में महारत आवश्यक है, भले ही आपसे ठीक-ठीक यही प्रश्न न पूछे जाएँ। यह समझने का एक ब्लूप्रिंट है कि आधुनिक वेब कैसे काम करता है। जब आपसे नया सिस्टम डिज़ाइन करने या प्रोडक्शन आउटेज डिबग करने को कहा जाएगा, तो 401 और 403 के अंतर (जैसा कि मैंने पहले समझाया) को समझना आपको समस्याएँ तेज़ी से सुलझाने में स्पष्टता देगा। आप समझेंगे कि अपने API इंटरेक्शंस को मानकीकृत करना—सिर्फ़ "चलता है" कोड लिखना नहीं—सीनियर इंजीनियर की पहचान है।
मैं एक डेटा इंजीनियर और कम्युनिटी बिल्डर हूँ, जो डेटा पाइपलाइनों, क्लाउड, और AI टूलिंग के साथ काम करता/करती हूँ, साथ ही DataCamp और उभरते डेवलपर्स के लिए व्यावहारिक, असरदार ट्यूटोरियल लिखता/लिखती हूँ।
FAQs
क्या मुझे HTTP methods के लिए RFC स्पेसिफिकेशंस याद करनी चाहिए?⌄
बिल्कुल नहीं। इंटरव्यूअर यह देखना चाहते हैं कि आप व्यावहारिक निहितार्थ समझते हैं, न कि डॉक्यूमेंटेशन रट सकते हैं। फोकस इस पर करें कि जब कोई नेटवर्क रिक्वेस्ट फेल हो और रिट्राइ की ज़रूरत पड़े तो idempotency क्यों महत्वपूर्ण है। यही सोच जूनियर और सीनियर में फर्क करती है।
अगर 2026 में मुझसे SOAP या XML-RPC पर सवाल पूछे जाएँ तो?⌄
यह जितना आप सोचते हैं उससे ज़्यादा होता है, खासकर बैंक्स, हेल्थकेयर, या सरकारी ठेकेदारों वाली भूमिकाओं में। कुंजी यह समझाना है कि ये पुराने प्रोटोकॉल अब भी क्यों मौजूद हैं (कड़े कॉन्ट्रैक्ट्स, मैसेज-लेवल सिक्योरिटी) बजाय उन्हें पुराना कहकर खारिज करने के। ट्रेंड्स नहीं, trade-offs समझने का प्रदर्शन करें।
बिना वास्तविक प्रोजेक्ट के मैं API डिज़ाइन का अभ्यास कैसे करूँ?⌄
कोई ऐसी सेवा चुनें जिसका आप रोज़ उपयोग करते हैं (Spotify, Twitter, आपके जिम का बुकिंग सिस्टम) और उसका API कैसे डिज़ाइन करेंगे, यह स्केच करें। आप कौन-से एंडपॉइंट बनाएँगे? 10,000 गानों वाली किसी यूज़र की प्लेलिस्ट के लिए pagination कैसे संभालेंगे? यह अभ्यास आपकी समझ में मौजूद गैप्स को तेज़ी से उजागर करता है।
क्या इंटरव्यूअर वास्तव में OAuth 2.1 टेस्ट करते हैं, या अब भी OAuth 2.0 ही हावी है?⌄
अधिकतर कंपनियाँ अब भी OAuth 2.0 पर हैं, पर यह जानना कि 2.1 सभी क्लाइंट्स के लिए PKCE को अनिवार्य करता है, दिखाता है कि आप सुरक्षा की सर्वोत्तम प्रथाओं से अपडेट हैं। इसे "इंडस्ट्री जिस दिशा में जा रही है" के रूप में उल्लेख करें, यह मानकर नहीं कि सभी पहले से वहाँ पहुँच गए हैं।
सबसे आम कौन-सी बात उम्मीदवारों को फँसा देती है?⌄
सिस्टम डिज़ाइन के दौरान स्पष्टीकरण वाले सवाल न पूछना। "एक API डिज़ाइन करें" कहा जाए तो उम्मीदवार सीधे एंडपॉइंट्स पर कूद जाते हैं बिना स्केल, कंसिस्टेंसी आवश्यकताओं, या यह आंतरिक है या सार्वजनिक—जैसे सवाल पूछे। सर्वश्रेष्ठ उत्तर समाधान से नहीं, सवालों से शुरू होते हैं।
REST APIs इंटरनेट की ज्यादातर इंटीग्रेशंस को शक्ति देती हैं। चाहे आप बैकएंड रोल, फुल-स्टैक पोज़ीशन, या सॉफ्टवेयर इंजीनियरिंग जॉब के लिए अप्लाई कर रहे हों, आपसे REST API डिजाइन, HTTP methods, और authentication पैटर्न्स पर सवाल ज़रूर पूछे जाएंगे।
इस गाइड में, मैं आपको वही सवाल समझाऊंगा जो इंटरव्यूअर वास्तव में पूछते हैं। मैंने इन्हें कठिनाई स्तर और रोल-टाइप के आधार पर व्यवस्थित किया है ताकि आप अपने लक्ष्य पद के लिए सबसे ज़रूरी चीज़ों पर फोकस कर सकें। हर उत्तर में व्यावहारिक उदाहरण और जहाँ ज़रूरी हो, ऐसे कोड स्निपेट शामिल हैं जिन्हें आप अपना सकते हैं।
एक बात ध्यान में रखें: इंटरव्यूअर उन्नत विषयों की तुलना में बुनियादी सिद्धांतों का कहीं ज़्यादा परीक्षण करते हैं। अगर आप बेसिक्स (HTTP methods, status codes, statelessness) में निपुण हैं, तो अधिकतर REST API इंटरव्यू आप आत्मविश्वास से संभाल लेंगे। जटिल आर्किटेक्चरल पैटर्न बाद में आते हैं।
बेसिक REST API इंटरव्यू प्रश्न
ये प्रश्न आपकी नींव की समझ को परखते हैं। इन्हें लगभग हर इंटरव्यू में, सिनियॉरिटी स्तर की परवाह किए बिना, अपेक्षित मानें।
1. REST क्या है और इसकी बाध्यताएँ (constraints) क्या हैं?
REST का अर्थ है Representational State Transfer। यह नेटवर्क्ड एप्लिकेशंस को डिज़ाइन करने की एक आर्किटेक्चरल शैली है, जिसे Roy Fielding ने 2000 की अपनी डॉक्टोरल थीसिस में परिभाषित किया था।
REST में छह constraints होती हैं:
2. REST और SOAP में क्या अंतर है?
REST एक आर्किटेक्चरल शैली है; SOAP एक प्रोटोकॉल। REST आमतौर पर HTTP पर JSON का उपयोग करता है और मानक HTTP methods का लाभ उठाता है। SOAP विशेष रूप से XML का उपयोग करता है और अपने लिफ़ाफ़ों और हेडर्स के साथ अपना मैसेजिंग फॉर्मेट परिभाषित करता है।
पहलू
REST
SOAP
फ़ॉर्मेट
JSON, XML, अन्य
केवल XML
ट्रांसपोर्ट
HTTP
HTTP, SMTP, अन्य
कैशिंग
नेटिव HTTP कैशिंग
कैश योग्य नहीं
परफॉर्मेंस
हल्का-फुल्का
ज़्यादा ओवरहेड
एंटरप्राइज़ सिस्टम्स जिनमें औपचारिक कॉन्ट्रैक्ट्स (WSDL) या मैसेज-लेवल सिक्योरिटी (WS-Security) की ज़रूरत होती है, उनके लिए SOAP अब भी समझदारी हो सकती है।
3. HTTP methods क्या हैं और किसे कब उपयोग करें?
HTTP methods किसी रिसोर्स पर की जाने वाली क्रिया को परिभाषित करते हैं।
Method
उद्देश्य
उदाहरण
GETकिसी रिसोर्स को प्राप्त करना
GET /users/123POSTनया रिसोर्स बनाना
POST /usersPUTपूरे रिसोर्स को बदलना
PUT /users/123PATCHरिसोर्स को आंशिक रूप से अपडेट करना
PATCH /users/123DELETEकिसी रिसोर्स को हटाना
DELETE /users/1234. PUT और POST में क्या अंतर है?
POST एक नया रिसोर्स बनाता है जहाँ सर्वर URI तय करता है। PUT क्लाइंट द्वारा दिए गए विशिष्ट URI पर रिसोर्स को बदल देता है।
यदि आप किसी ऐसे URI पर PUT करें जो मौजूद नहीं है, तो सर्वर उसे बना सकता है। यदि आप मौजूदा URI पर PUT करें, तो आप पूरे रिसोर्स को बदल देते हैं।
5. PUT और PATCH में क्या अंतर है?
PUT पूरे रिसोर्स को बदलता है। PATCH आंशिक बदलाव लागू करता है।
6. REST में "stateless" का क्या अर्थ है?
Stateless का अर्थ है कि हर रिक्वेस्ट में वह सारी जानकारी होनी चाहिए जिसकी सर्वर को उसे प्रोसेस करने के लिए ज़रूरत है। सर्वर रिक्वेस्ट्स के बीच कोई क्लाइंट कॉन्टेक्स्ट स्टोर नहीं करता।
इसका मतलब है सर्वर-साइड सेशन्स नहीं। यदि कोई यूज़र प्रमाणीकृत है, तो क्लाइंट को हर रिक्वेस्ट के साथ प्रमाण-पत्र (आमतौर पर एक टोकन) भेजना होगा।
7. किसी API को RESTful क्या बनाता है?
API तभी सचमुच RESTful होता है जब वह सभी REST constraints को पूरा करता है, जिनमें HATEOAS (Hypermedia as the Engine of Application State) शामिल है। व्यवहार में, ज्यादातर API जो खुद को "REST" कहते हैं, वास्तव में "REST-like" या Richardson Maturity Model के Level 2 पर होते हैं। और सच कहें, तो अधिकतर उपयोग मामलों के लिए यह पर्याप्त होता है।
REST APIs के लिए Richardson Maturity Model के स्तर। छवि: लेखक।
8. वे बुनियादी HTTP status codes कौन-से हैं जिन्हें आपको पता होना चाहिए?
आपको कम-से-कम ये सात आवश्यक status codes पता होने चाहिए, जो अधिकतर API परिदृश्यों को कवर करते हैं:
Code
नाम
कब उपयोग करें
200
OK
सफल GET, PUT, PATCH
201
Created
सफल POST (Location हेडर शामिल करें)
204
No Content
सफल DELETE
400
Bad Request
गलत ढांचा (malformed syntax)
404
Not Found
रिसोर्स मौजूद नहीं
500
Internal Server Error
सर्वर-साइड विफलता
9. रिसोर्स और एंडपॉइंट में क्या अंतर है?
रिसोर्स डेटा एंटिटी है (यूज़र, ऑर्डर, प्रोडक्ट)। एंडपॉइंट वह URL पाथ है जो उस रिसोर्स तक पहुँच देता है।
10. URI डिजाइन के लिए सर्वोत्तम प्रथाएँ क्या हैं?
क्रियाओं (verbs) नहीं, संज्ञाओं (nouns) का उपयोग करें। URI लोअरकेस रखें और बहु-शब्द नामों के लिए हाइफ़न का उपयोग करें। कलेक्शंस के लिए बहुवचन संज्ञाएँ रखें।
गहरी nesting से बचें।
/users/123/posts/456/comments/789की बजाय/comments/789या/comments?post_id=456पर विचार करें।11. Idempotency क्या है और कौन-से HTTP methods idempotent हैं?
यदि किसी ऑपरेशन को कई बार करने पर वही परिणाम मिले जो एक बार करने पर मिलता है, तो वह idempotent है।
Method
Idempotent
क्यों
GETहाँ
रीड करने से स्टेट नहीं बदलता
PUTहाँ
उसी डेटा से बदलने पर परिणाम समान
DELETEहाँ
दो बार डिलीट करने पर भी रिसोर्स डिलीट ही रहता है
POSTनहीं
दो बार बनाने पर दो रिसोर्स बनते हैं
PATCHनहीं*
ऑपरेशन पर निर्भर
जो PATCH किसी मान को सेट करता है, वह idempotent है; जो PATCH काउंटर को इन्क्रिमेंट करता है, वह नहीं।
12. Safe और idempotent methods में क्या अंतर है?
Safe methods रिसोर्स को मॉडिफाई नहीं करते (GET, HEAD, OPTIONS)। Idempotent methods को कई बार कॉल करने पर समान प्रभाव रहता है (GET, PUT, DELETE)।
सभी safe methods idempotent हैं, पर सभी idempotent methods safe नहीं हैं। DELETE idempotent है पर safe नहीं, क्योंकि यह स्टेट बदलता है।
13. Query parameters और path parameters कब उपयोग करने चाहिए?
Path parameters किसी विशिष्ट रिसोर्स की पहचान करते हैं। Query parameters कलेक्शंस को फ़िल्टर, सॉर्ट या paginate करते हैं।
14. Content negotiation क्या है?
Content negotiation क्लाइंट्स को किसी रिसोर्स के अलग-अलग प्रतिनिधित्व माँगने देता है। क्लाइंट
Acceptहेडर भेजता है, और सर्वर उपयुक्त फॉर्मेट में जवाब देता है।15. OPTIONS method का उद्देश्य क्या है?
OPTIONS किसी विशिष्ट URL के लिए सर्वर किन HTTP methods को सपोर्ट करता है, यह लौटाता है। ब्राउज़र CORS preflight के लिए इसका उपयोग करते हैं ताकि यह जाँचा जा सके कि cross-origin रिक्वेस्ट्स की अनुमति है या नहीं।
इंटरमीडिएट REST API इंटरव्यू प्रश्न
ये प्रश्न व्यावहारिक उपयोग और निर्णय-क्षमता को परखते हैं। मिड-लेवल पदों के लिए इन्हें अपेक्षित मानें।
16. 401 और 403 में क्या अंतर है?
यह status codes की सबसे आम उलझन है। मैंने सीनियर इंजीनियर्स को भी कोड रिव्यू में इन्हें मिलाते देखा है।
401 Unauthorized
मतलब unauthenticated। सर्वर नहीं जानता कि आप कौन हैं। आपका रेस्पॉन्स यूज़र को लॉगिन के लिए प्रेरित करना चाहिए।
403 Forbidden
मतलब unauthorized। सर्वर जानता है कि आप कौन हैं, पर आपके पास अनुमति नहीं है। दोबारा authenticate करने से मदद नहीं मिलेगी।
प्रमाणीकरण बनाम अधिकृत-प्रवेश (authorization) त्रुटि निर्णय फ़्लोचार्ट। छवि: लेखक।
17. 400 और 422 में क्या अंतर है?
अंतर को दर्शाने के लिए उदाहरण:
400 Bad Request
यह गलत सिंटैक्स को दर्शाता है। सर्वर रिक्वेस्ट को पार्स नहीं कर सकता (अमान्य JSON संरचना, आवश्यक हेडर्स गायब)।
422 Unprocessable Entity
यह वैध सिंटैक्स लेकिन अर्थगत त्रुटियों को दर्शाता है। JSON वैध है पर डेटा वैलिडेशन में फेल (अमान्य ईमेल फॉर्मेट, बहुत छोटा पासवर्ड)।
18. 409 Conflict कब उपयोग करना चाहिए?
409 का उपयोग तब करें जब रिक्वेस्ट रिसोर्स की वर्तमान स्थिति से टकराती हो:
19. आप pagination कैसे लागू करते हैं?
दो मुख्य तरीके:
Offset-आधारित pagination
सरल, पर बड़े डेटा सेट्स के साथ परफॉर्मेंस समस्याएँ।
Cursor-आधारित pagination
बेहतर स्केल करता है और डेटा बदलने पर "page drift" से बचाता है।
Stripe, GitHub, और Slack जैसी कंपनियाँ बड़े डेटा सेट्स के लिए cursor-आधारित pagination का उपयोग करती हैं।
20. आम API versioning स्ट्रैटेजीज़ क्या हैं?
तीन मुख्य तरीके हैं, जिनके अलग-अलग trade-offs हैं:
URI वर्ज़निंग
सबसे आम। स्पष्ट और डिबग करने में आसान।
हेडर वर्ज़निंग
URLs साफ़ रहते हैं, पर ब्राउज़र्स में टेस्ट करना कठिन।
क्वेरी पैरामीटर वर्ज़निंग
जोड़ना आसान, पर URLs को अव्यवस्थित करता है।
21. ETag क्या है और कैशिंग कैसे काम करती है?
ETag किसी रिसोर्स के लिए एक वर्ज़न पहचानकर्ता है। सर्वर इसे रेस्पॉन्स में भेजता है; क्लाइंट बाद की रिक्वेस्ट्स में वापस भेजता है ताकि पता चल सके कि रिसोर्स बदला है या नहीं।
22. REST APIs के लिए कौन-सी authentication विधियाँ उपयोग होती हैं?
चार सबसे आम विधियाँ हैं: API Keys, Bearer Tokens, OAuth 2.0, और JWT:
विधि
उपयोग मामला
फायदे
नुकसान
API Keys
सर्वर-टू-सर्वर
सरल
कोई एक्सपायरी नहीं, लीक होना आसान
Bearer Tokens
सेशन ऑथ
Stateless
स्टोरेज को सुरक्षित रखना होगा
OAuth 2.0
थर्ड-पार्टी ऐक्सेस
Delegated auth
इम्प्लीमेंटेशन जटिल
JWT
Stateless auth
Self-contained
ब्लैकलिस्ट बिना रद्द (revoke) नहीं कर सकते
23. JWT क्या है और यह कैसे काम करता है?
JWT (JSON Web Token) तीन भागों से बना होता है: Header, Payload, और Signature। Python में JSON के साथ काम करना और जानें।
सर्वर टोकन पर हस्ताक्षर करता है; क्लाइंट्स इसे रिक्वेस्ट्स के साथ भेजते हैं। सर्वर बिना डेटाबेस लुकअप के सिग्नेचर को वैलिडेट करता है।
24. RS256 और HS256 में क्या अंतर है?
HS256 (सिमेट्रिक): वही सीक्रेट साइन और वेरिफाई करता है। जोखिम तब बढ़ता है जब कई सेवाओं को टोकन वेरिफाई करने हों।
RS256 (असिमेट्रिक): प्राइवेट की साइन करती है, पब्लिक की वेरिफाई करती है। वितरित सिस्टम्स के लिए अनुशंसित जहाँ कई सेवाएँ टोकन वैलिडेट करती हैं।
25. HATEOAS क्या है?
HATEOAS (Hypermedia as the Engine of Application State) का मतलब है कि रेस्पॉन्स में संबंधित क्रियाओं और रिसोर्सेज़ के लिंक शामिल हों।
व्यवहार में, अधिकतर APIs HATEOAS को पूरी तरह लागू नहीं करतीं। अवधारणा जानें, पर अधिकांश नौकरियों में इसे पूर्ण रूप से लागू करने की अपेक्षा न रखें। बड़ी टेक कंपनियाँ भी शायद ही कभी पूरी तरह HATEOAS-अनुपालक APIs बनाती हैं।
26. आप त्रुटियों (errors) को लगातार तरीके से कैसे संभालते हैं?
सुसंगत error रेस्पॉन्सेस के लिए RFC 7807 Problem Details फॉर्मेट का उपयोग करें:
27. Rate limiting क्या है और यह महत्वपूर्ण क्यों है?
Rate limiting आपके API को दुरुपयोग से बचाता है और निष्पक्ष उपयोग सुनिश्चित करता है। सामान्य रेस्पॉन्स:
28. आप फ़िल्टरिंग और सॉर्टिंग कैसे डिज़ाइन करते हैं?
स्पष्ट कन्वेंशन्स के साथ query parameters का उपयोग करें:
एडवांस्ड REST API इंटरव्यू प्रश्न
ये प्रश्न आर्किटेक्चरल सोच को परखते हैं। सीनियर पदों के लिए अपेक्षित मानें।
29. OAuth 2.0 और OAuth 2.1 में क्या बदला?
OAuth 2.1 सुरक्षा से जुड़ी श्रेष्ठ प्रथाओं को समेकित करता है:
फ़ीचर
OAuth 2.0
OAuth 2.1
PKCE
वैकल्पिक
सभी क्लाइंट्स के लिए अनिवार्य
Implicit Grant
समर्थित
हटा दिया गया
Password Grant
समर्थित
हटा दिया गया
Redirect URI
लचीला मिलान
सटीक मिलान आवश्यक
मुख्य निष्कर्ष: सभी क्लाइंट प्रकारों के लिए Authorization Code flow के साथ PKCE का उपयोग करें।
30. पेमेंट एंडपॉइंट्स के लिए idempotency कैसे लागू करेंगे?
POST रिक्वेस्ट्स को रिट्राइज़ के लिए सुरक्षित बनाने हेतु idempotency keys का उपयोग करें:
क्लाइंट एक UUID जनरेट करता है और रिक्वेस्ट के साथ भेजता है। यदि वही key दोबारा आए, तो cached रेस्पॉन्स लौटा दें।
31. आप एक वितरित rate limiter कैसे डिज़ाइन करेंगे?
डिस्ट्रिब्यूटेड सिस्टम्स के लिए आप इन-मैमोरी काउंटर्स का उपयोग नहीं कर सकते क्योंकि ट्रैफिक लोड-बैलेंस होकर कई इंस्टेंसेज़ में बँटा होता है। यह एक आम गलती है जो उम्मीदवारों को उलझा देती है।
आर्किटेक्चर:
32. आप gRPC को REST पर कब चुनेंगे?
gRPC और REST के बीच चुनाव आपकी विशिष्ट आवश्यकताओं पर निर्भर करता है।
gRPC चुनें जब:
REST चुनें जब:
33. लंबी अवधि चलने वाले ऑपरेशन्स को कैसे संभालते हैं?
असिंक्रोनस रिक्वेस्ट पैटर्न का उपयोग करें:
क्लाइंट रिक्वेस्ट भेजता है
सर्वर
202 Acceptedके साथ एक स्टेटस URL लौटाता हैक्लाइंट पूर्णता तक स्टेटस URL को पोल करता है
34. Saga पैटर्न क्या है?
Saga माइक्रोसर्विसेज़ में बिना लॉकिंग के वितरित ट्रांज़ैक्शंस को संभालता है। हर सर्विस एक लोकल ट्रांज़ैक्शन चलाती है और एक इवेंट प्रकाशित करती है। यदि कोई स्टेप असफल हो, तो पिछली स्टेप्स को पूर्ववत करने के लिए compensating ट्रांज़ैक्शंस चलते हैं।
35. सामान्य JWT सुरक्षा कमज़ोरियाँ कौन-सी हैं?
Algorithm confusion: अटैकर RS256 को HS256 में बदल देता है और पब्लिक की से साइन करता है। समाधान: हमेशा एल्गोरिद्म्स को whitelist करें।
"none" एल्गोरिद्म: अटैकर सिग्नेचर पूरी तरह हटा देता है। समाधान: "none" एल्गोरिद्म को अस्वीकार करें।
बैकएंड डेवलपर REST API प्रश्न
ये प्रश्न सर्वर-साइड इम्प्लीमेंटेशन डिटेल्स, डेटाबेस ऑप्टिमाइज़ेशन, और परफॉर्मेंस पैटर्न्स पर केंद्रित हैं जिनका बैकएंड इंजीनियर्स रोज़ सामना करते हैं।
36. N+1 क्वेरी समस्या क्या है?
N+1 समस्या तब होती है जब आप N रिकॉर्ड्स फेच करते हैं और प्रत्येक रिकॉर्ड के रिलेशनशिप के लिए अलग क्वेरी चलाते हैं।
समाधान:
Django: फॉरेन कीज़ के लिए
select_related(), और many-to-many के लिएprefetch_related()का उपयोग करें।SQLAlchemy:
joinedload()याselectinload()का उपयोग करें।37. आप connection pooling कैसे कॉन्फ़िगर करते हैं?
Connection pooling हर रिक्वेस्ट पर नई कनेक्शन बनाने के बजाय डेटाबेस कनेक्शंस को पुन: उपयोग करता है।
38. आप कौन-सी कैशिंग स्ट्रैटेजीज़ जानते हैं?
तीन प्राथमिक कैशिंग स्ट्रैटेजीज़ हैं, जो अलग-अलग एक्सेस पैटर्न्स के लिए अनुकूलित हैं:
स्ट्रैटेजी
विवरण
उपयोग मामला
Cache-Aside
एप पहले कैश, फिर DB जाँचता है
रीड-हेवी, थोड़ी staleness स्वीकार्य
Write-Through
कैश और DB में साथ-साथ लिखना
कंसिस्टेंसी अहम
Write-Behind
पहले कैश में लिखना, DB को असिंक्रोनस अपडेट
उच्च write थ्रूपुट
39. आप webhook signature verification कैसे लागू करते हैं?
Webhook signature verification सुनिश्चित करता है कि रिक्वेस्ट अपेक्षित सेंडर से ही आई है। यहाँ HMAC का उपयोग करते हुए एक इम्प्लीमेंटेशन है:
40. कौन-से मेट्रिक्स API की सेहत दर्शाते हैं?
API की सेहत जाँचने के लिए आपको ये चार प्रमुख मेट्रिक्स मॉनिटर करने चाहिए:
मेट्रिक
विवरण
अलर्ट थ्रेशहोल्ड
P50 Latency
मीडियन रेस्पॉन्स समय
बेसलाइन
P99 Latency
सबसे धीमे 1%
> 2s पाँच मिनट के लिए
Error Rate
4xx/5xx का %
> 1% पाँच मिनट के लिए
Throughput
प्रति सेकंड रिक्वेस्ट्स
क्षमता योजना (capacity planning)
फुल स्टैक डेवलपर REST API प्रश्न
ये प्रश्न क्लाइंट और सर्वर दोनों चिंताओं की आपकी समझ को परखते हैं, विशेषकर ब्राउज़र सुरक्षा, स्टेट मैनेजमेंट, और cross-origin संचार।
41. ब्राउज़र CORS preflight रिक्वेस्ट कब भेजता है?
ब्राउज़र OPTIONS preflight भेजते हैं जब:
42. आप CORS को सुरक्षित रूप से कैसे कॉन्फ़िगर करते हैं?
सुरक्षित CORS कॉन्फ़िगरेशन के लिए origins को स्पष्ट रूप से whitelist करना और credentials को सावधानी से संभालना ज़रूरी है। यहाँ एक सुरक्षित Express.js सेटअप है:
credentials के साथ कभी भी वाइल्डकार्ड (
*) का उपयोग न करें।nullorigin की अनुमति कभी न दें।43. क्लाइंट पर टोकन कहाँ स्टोर करने चाहिए?
टोकन स्टोरेज में XSS और CSRF कमजोरियों के बीच सुरक्षा trade-offs होते हैं"
स्टोरेज
XSS जोखिम
CSRF जोखिम
सिफारिश
localStorage
उच्च
शून्य
टोकन्स के लिए न उपयोग करें
HttpOnly Cookie
कम
रोकथाम आवश्यक
अनुशंसित
इन-मैमोरी
कम
कम
ऐक्सेस टोकन्स के लिए सर्वोत्तम
श्रेष्ठ अभ्यास: रिफ्रेश टोकन्स को HttpOnly कुकीज़ में
SameSite=Strictके साथ स्टोर करें। ऐक्सेस टोकन्स को मेमोरी में रखें।44. WebSockets बनाम SSE कब उपयोग करने चाहिए?
चयन इस पर निर्भर करता है कि आपको दो-तरफ़ा संचार चाहिए या नहीं और आप reconnection कैसे संभालना चाहते हैं:
फ़ीचर
WebSockets
SSE
दिशा
दो-तरफ़ा
सर्वर से क्लाइंट
पुन: कनेक्शन
मैनुअल
स्वचालित
बाइनरी डेटा
हाँ
नहीं
नोटिफिकेशंस, लाइव फ़ीड्स, स्टॉक टिकर्स के लिए SSE का उपयोग करें। चैट, मल्टीप्लेयर गेम्स, collaborative एडिटिंग के लिए WebSockets का उपयोग करें।
45. आप फ़ाइल अपलोड्स कैसे संभालते हैं?
बड़ी फ़ाइलों के लिए, प्रोग्रेस ट्रैकिंग के साथ chunked अपलोड्स का उपयोग करें:
परिदृश्य-आधारित REST API प्रश्न
ये प्रश्न इस बात का आकलन करते हैं कि आप वास्तविक समस्याओं पर REST सिद्धांतों को कैसे लागू करते हैं। इंटरव्यूअर आपके डिजाइनिंग प्रोसेस और आर्किटेक्चरल trade-offs को कैसे संतुलित करते हैं, यह देखना चाहते हैं।
46. एक होटल बुकिंग सिस्टम के लिए REST API डिज़ाइन करें
होटल बुकिंग सिस्टम को सर्च, उपलब्धता जाँच, और आरक्षण को संभालना होता है, साथ ही डबल-बुकिंग रोकनी होती है। यहाँ कोर रिसोर्सेज़ हैं:
रिसोर्सेज़:
/hotels- होटलों की सूची और सर्च/hotels/{id}/rooms- उपलब्ध कमरे/bookings- बुकिंग बनाना और मैनेज करना/guests/{id}- गेस्ट प्रोफाइल्समुख्य निर्णय:
47. आप soft deletes कैसे लागू करेंगे?
रिकॉर्ड्स हटाने के बजाय
deleted_atटाइमस्टैम्प जोड़ें:48. आप v1 से v2 में बिना क्लाइंट्स को तोड़े कैसे माइग्रेट करेंगे?
Strangler Fig पैटर्न का उपयोग करें:
49. आप जटिल फ़िल्टरिंग के साथ सर्च API कैसे डिज़ाइन करेंगे?
कई फ़िल्टर्स वाले प्रोडक्ट सर्च के लिए:
डिज़ाइन निर्णय:
50. माइक्रोसर्विस आर्किटेक्चर में आप API versioning कैसे संभालते हैं?
विकल्प:
गेटवे-लेवल वर्ज़निंग: API गेटवे
/v1/*को पुरानी सेवाओं पर, और/v2/*को नई सेवाओं पर रूट करता हैसर्विस-लेवल वर्ज़निंग: प्रत्येक सर्विस अपना वर्ज़न नेगोशिएशन स्वयं संभालती है
कंज़्यूमर-ड्रिवन कॉन्ट्रैक्ट्स: Pact या समान टूल्स का उपयोग कर संगतता सुनिश्चित करें
अधिकतर टीमों के लिए, गेटवे-लेवल वर्ज़निंग सबसे साफ़ विभाजन प्रदान करती है।
51. अलग-अलग यूज़र टियर्स के लिए आप rate limiting कैसे लागू करेंगे?
समाधान में टियर-विशिष्ट लिमिट्स परिभाषित करना और उन्हें Redis काउंटर्स के जरिए जाँचना शामिल है:
व्यवहार-संबंधी REST API प्रश्न
ये प्रश्न आपकी संचार क्षमता और यह परखते हैं कि आप वास्तविक API चुनौतियों को कैसे संभालते हैं। अपने समस्या-समाधान प्रोसेस और स्टेकहोल्डर्स के साथ काम करने के तरीके को प्रदर्शित करने पर फोकस करें।
52. किसी गैर-तकनीकी व्यक्ति को REST समझाएँ
"REST API को एक रेस्टोरेंट के वेटर की तरह समझें। आप (ग्राहक) सीधे किचन में नहीं जा सकते। इसके बजाय, आप वेटर को मेन्यू से बताते हैं कि आपको क्या चाहिए, और वह आपको लाकर देता है। मेन्यू API डॉक्यूमेंटेशन जैसा है, जो बताता है कि आप क्या ऑर्डर कर सकते हैं। वेटर कुछ नियमों का पालन करता है: आप कुछ माँगते हैं (GET), कुछ नया ऑर्डर करते हैं (POST), या कुछ वापस भेजते हैं (DELETE)। अगर किचन में कुछ नहीं है, तो वेटर आपको बता देता है (404 Not Found) ताकि आप बेवजह इंतज़ार न करें।"
यह उपमा स्टेकहोल्डर मीटिंग्स में आश्चर्यजनक रूप से अच्छी तरह काम करती है।
53. वह समय बताइए जब आपने किसी API को ऑप्टिमाइज़ किया
STAR विधि का उपयोग करें:
54. आप API consumers को breaking changes कैसे कम्युनिकेट करते हैं?
जल्दी घोषणा करें: बड़े बदलावों के लिए कम-से-कम 6-12 महीनों का नोटिस दें
Sunset हेडर उपयोग करें:
Sunset: Sat, 31 Dec 2026 23:59:59 GMTमाइग्रेशन गाइड्स दें: क्या बदला और कैसे अनुकूलित करें, यह स्पष्ट डॉक्यूमेंट करें
दोनों वर्ज़न्स चलाएँ: ट्रांज़िशन के दौरान पुराना वर्ज़न चालू रखें
उपयोग मॉनिटर करें: कौन-से क्लाइंट अब भी पुराने वर्ज़न पर हैं, इसे ट्रैक करें
55. आप APIs के लिए कौन-सी डॉक्यूमेंटेशन बनाते हैं?
आवश्यक डॉक्यूमेंटेशन में शामिल हैं:
56. आप कब REST का उपयोग नहीं करेंगे?
REST हमेशा सही विकल्प नहीं होता। विकल्पों का समय पर चयन करना आर्किटेक्चरल परिपक्वता दिखाता है। मैंने टीमों को ऐसे उपयोग मामलों में REST को ठूँसते देखा है जहाँ यह समस्याएँ बढ़ाता है।
परिदृश्य
बेहतर विकल्प
रीयल-टाइम चैट या गेमिंग
WebSockets
हाई-परफॉर्मेंस आंतरिक सेवाएँ
gRPC
जटिल नेस्टेड डेटा क्वेरीज़
GraphQL
इवेंट-ड्रिवन आर्किटेक्चर्स
मैसेज ब्रोकर्स (Kafka, RabbitMQ)
दो-तरफ़ा स्ट्रीमिंग
gRPC bidirectional या WebSockets
REST API त्वरित संदर्भ
इस सेक्शन का उपयोग त्वरित लुकअप के रूप में करें जब भी आपको इंटरव्यू तैयारी या वास्तविक डेवलपमेंट के दौरान HTTP method प्रॉपर्टीज़, status codes, या सामान्य पैटर्न की पुष्टि करनी हो।
HTTP Methods तुलना
यह तालिका प्रत्येक HTTP method की मुख्य विशेषताओं का सार प्रस्तुत करती है, जो आपको अपने उपयोग मामले के लिए सही विकल्प चुनने में मदद करती है।
Method
Safe
Idempotent
Cacheable
सामान्य उपयोग
GET
हाँ
हाँ
हाँ
रिसोर्स प्राप्त करना
POST
नहीं
नहीं
शर्तीय
रिसोर्स बनाना
PUT
नहीं
हाँ
नहीं
रिसोर्स बदलना
PATCH
नहीं
नहीं
शर्तीय
आंशिक अपडेट
DELETE
नहीं
हाँ
नहीं
रिसोर्स हटाना
HEAD
हाँ
हाँ
हाँ
केवल हेडर्स प्राप्त करना
OPTIONS
हाँ
हाँ
नहीं
CORS preflight
Status Codes संदर्भ
यहाँ सबसे आम HTTP status codes श्रेणी अनुसार दिए गए हैं। पूरी स्पेसिफिकेशन याद रखने के बजाय यह समझना अधिक महत्वपूर्ण है कि किसे कब उपयोग करना है।
2xx सफलता
4xx क्लाइंट त्रुटियाँ
5xx सर्वर त्रुटियाँ
सामान्य गलतियाँ जिनसे बचें
अनुभवी डेवलपर्स भी इन जालों में फँस जाते हैं। REST APIs डिज़ाइन या लागू करते समय इन सामान्य गलतियों से सावधान रहें:
URLs में verbs का उपयोग (जैसे
/getUsersकी जगह/users)एरर स्टेट्स के लिए 200 OK लौटाना, जिससे क्लाइंट-साइड एरर हैंडलिंग टूटती है
401 और 403 में भ्रम (Authentication बनाम Authorization)
URLs को अत्यधिक नेस्ट करना दो स्तर से ज़्यादा
localStorage में टोकन्स स्टोर करना (XSS कमजोरियाँ पैदा करता है)
POST रिक्वेस्ट्स के लिए idempotency की अनदेखी
कार्रवाई योग्य विवरणों के बिना सामान्य एरर संदेश लौटाना
निष्कर्ष
मैं मानता हूँ कि परिभाषाएँ रट लेना हर तकनीकी इंटरव्यू पास कराने की गारंटी नहीं है। वास्तविकता यह है कि प्रोडक्शन इंजीनियरिंग में हम अक्सर उन "कड़े" नियमों को तोड़ते हैं जिन पर अभी चर्चा हुई, और इंटरव्यूअर आपकी तर्क-क्षमता को आपकी RFC स्पेसिफिकेशंस सुनाने की क्षमता से अधिक महत्व देते हैं। अत्यधिक विशिष्ट भूमिकाओं में, गहरे डोमेन ज्ञान या किसी विशेष फ्रेमवर्क की विशेषज्ञता निर्णायक कारक हो सकती है।
लेकिन इन REST मूलभूतों में महारत आवश्यक है, भले ही आपसे ठीक-ठीक यही प्रश्न न पूछे जाएँ। यह समझने का एक ब्लूप्रिंट है कि आधुनिक वेब कैसे काम करता है। जब आपसे नया सिस्टम डिज़ाइन करने या प्रोडक्शन आउटेज डिबग करने को कहा जाएगा, तो 401 और 403 के अंतर (जैसा कि मैंने पहले समझाया) को समझना आपको समस्याएँ तेज़ी से सुलझाने में स्पष्टता देगा। आप समझेंगे कि अपने API इंटरेक्शंस को मानकीकृत करना—सिर्फ़ "चलता है" कोड लिखना नहीं—सीनियर इंजीनियर की पहचान है।
यदि आप इन सिस्टम्स को और गहराई से बनाना चाहते हैं, तो हमारा Introduction to APIs in Python कोर्स देखें।