REST API के लिए URL एन्कोडिंग की सर्वोत्तम प्रथाएं
REST API डेवलपमेंट में URL एन्कोडिंग में महारत हासिल करें। जानें कि query parameters, path segments को सही तरीके से कैसे एन्कोड करें और भरोसेमंद API कैसे बनाएं।
API के लिए URL एन्कोडिंग क्यों मायने रखती है
REST API डेवलपमेंट में सही URL एन्कोडिंग बेहद महत्वपूर्ण है। गलत तरीके से एन्कोड किए गए URL टूटे हुए requests, सुरक्षा कमज़ोरियों, डेटा हानि, और अलग-अलग सिस्टम व प्रोग्रामिंग भाषाओं के बीच इंटरऑपरेबिलिटी की समस्याओं का कारण बन सकते हैं। एक API डेवलपर के रूप में, आपको यह समझना ज़रूरी है कि requests भेजते समय URL को कैसे एन्कोड करें और requests को संभालते समय उन्हें कैसे डिकोड करें।
Path Parameters को एन्कोड करना
REST API अक्सर resources की पहचान के लिए path parameters का उपयोग करती हैं। जब इन parameters में special characters होते हैं, तो सही एन्कोडिंग अनिवार्य होती है:
// विशेष characters वाला path parameter
// Resource: "Tom & Jerry's Show"
GET /api/shows/Tom%20%26%20Jerry%27s%20Show
// JavaScript का उपयोग करते हुए
const showName = "Tom & Jerry's Show";
const url = `/api/shows/${encodeURIComponent(showName)}`;
// मान में forward slash वाला path
// File: "documents/my report.pdf"
GET /api/files/documents%2Fmy%20report.pdf
Query Parameters को एन्कोड करना
Query parameters वह सबसे आम जगह हैं जहां एन्कोडिंग की समस्याएं पैदा होती हैं। हमेशा keys और values दोनों को एन्कोड करें:
// विशेष characters वाले कई parameters
GET /api/search?q=C%2B%2B%20programming&category=languages%20%26%20tools&page=1
// URLSearchParams का उपयोग करते हुए (अनुशंसित)
const params = new URLSearchParams({
q: 'C++ programming',
category: 'languages & tools',
page: '1'
});
const url = '/api/search?' + params.toString();
Query Strings में Arrays और Objects को संभालना
अलग-अलग API frameworks array parameters को अलग-अलग तरीके से संभालते हैं। यहां आम परंपराएं दी गई हैं:
// दोहराई गई keys (सबसे आम)
GET /api/items?tag=javascript&tag=typescript&tag=react
// Bracket notation (PHP, Rails)
GET /api/items?tags[]=javascript&tags[]=typescript
// अल्पविराम से अलग किए गए (कुछ REST API)
GET /api/items?tags=javascript,typescript,react
// Nested objects (bracket notation)
GET /api/search?filter[status]=active&filter[sort]=date
Content-Type और एन्कोडिंग
Content-Type header यह निर्धारित करता है कि request body का डेटा कैसे एन्कोड किया जाएगा:
application/x-www-form-urlencoded- URL query strings के समान। Keys और values एन्कोड की जाती हैं, spaces+में बदल जाते हैंmultipart/form-data- file uploads के लिए उपयोग किया जाता है। हर हिस्से की अपनी एन्कोडिंग होती हैapplication/json- JSON format। body के लिए किसी URL एन्कोडिंग की ज़रूरत नहीं, लेकिन Content-Type सही तरीके से सेट होना चाहिए
API सुरक्षा संबंधी विचार
- डिकोड किए गए URL parameters को सर्वर पर हमेशा validate और sanitize करें
%2e%2e%2f(../) जैसे एन्कोडेड sequences के माध्यम से होने वाले path traversal attacks से सावधान रहें- denial-of-service attacks को रोकने के लिए URL length limits लागू करें
- client-side एन्कोडिंग पर कभी भरोसा न करें -- हमेशा सर्वर पर फिर से validate करें
- double-encoding attacks पर नज़र रखें, जहां एक बार डिकोड करने के बाद दुर्भावनापूर्ण input filters को बायपास कर जाता है
- URL डिकोडिंग के बाद भी SQL injection को रोकने के लिए parameterized queries का उपयोग करें
API में URL एन्कोडिंग का परीक्षण
अपने API endpoints का परीक्षण करते समय, निम्नलिखित परिदृश्यों के लिए test cases शामिल करें:
- spaces वाले parameters (
%20और+दोनों का परीक्षण करें) - reserved characters वाले parameters (
&,=,?,#) - Unicode characters वाले parameters
- खाली parameter values
- बहुत लंबी parameter values
- पहले से एन्कोडेड input (double encoding का पता लगाना)
- null bytes वाले parameters (
%00)