diff --git a/hi.lang.js b/hi.lang.js new file mode 100644 index 0000000..2726f70 --- /dev/null +++ b/hi.lang.js @@ -0,0 +1,158 @@ +/** + * Configuration for the english (original) translation + */ + +module.exports = { + // Language display name. MUST BE THE SAME AS IN [inert.config.js].custom.langs + display: "हिंदी", + prefix: "/hi/", + dir: "ltr", + lang: "hi", + // `p` stands for `paragraph`. This will contain translations of full text blocks + // + p: { + headline: "ब्राउज़र और node.js के लिए Promise आधारित HTTP क्लाइंट", + subhead: `Axios ब्राउज़र और node.js के लिए एक सरल प्रॉमिस-आधारित HTTP क्लाइंट है। Axios एक छोटे पैकेज में एक बहुत ही एक्सटेंसिबल इंटरफ़ेस के साथ उपयोग में आसान लाइब्रेरी प्रदान करता है।`, + sponsors: `

हमारे प्रोजेक्ट का समर्थन करने के लिए धन्यवाद।

+

अगर आपके द्वारा चुना गया स्तर यह लाभ प्रदान करता है, तो आपको 24 घंटों के भीतर स्वचालित रूप से इस सूची में जोड़ दिया जाएगा।

+
और पढ़ें...
+ `, + }, + // `t` stands fot `translation`. This will contain translations of single words or phrases + t: { + "Get Started": 'शुरु करें', + "View on GitHub": 'GitHub पर देखें', + "Languages": 'भाषाऐं', + "Open Source": 'Open Source', + "Contribute": 'योगदान करें', + "Source on GitHub": 'GitHub पर स्रोत', + "Issues": 'समस्याऐं', + "Pull Requests": 'Pull Requests', + "Code of Conduct": 'Code of Conduct', + "Fork on GitHub": "GitHub में फोर्क करें", + "Fork the Website": "Website फोर्क करें", + "Create an Issue": "समस्या बनाऐं", + "Next": 'अगला', + "Previous": "पिछला", + "Website Copy Right Footer": 'Website कॉपीराईट फुटर', + "View On Github": 'GitHub पर देखें', + "Axios Project Copy Right Footer": 'Axios प्रोजेक्ट कॉपीराईट फुटर', + "License Label Footer": 'लाईसेंस लेबल फुटर', + "Sponsors": 'प्रायोजक', + "Become a sponsor": 'प्रायोजक', + "Gold Sponsors": 'गॊल्ड प्रायोजक', + }, + sidebar: [ + { + type: "heading", + text: "शुरु करें", + }, + { + type: "link", + href: "/docs/intro", + text: "भूमिका", + }, + { + type: "link", + href: "/docs/example", + text: "उदाहरण", + }, + { + type: "link", + href: "/docs/post_example", + text: "POST Requests", + }, + { + type: "heading", + text: "Axios API", + }, + { + type: "link", + href: "/docs/api_intro", + text: "Axios API भूमिका", + }, + { + type: "link", + href: "/docs/instance", + text: "The Axios Instance", + }, + { + type: "link", + href: "/docs/req_config", + text: "Request Config", + }, + { + type: "link", + href: "/docs/res_schema", + text: "Response Schema", + }, + { + type: "link", + href: "/docs/config_defaults", + text: "Config Defaults", + }, + { + type: "link", + href: "/docs/interceptors", + text: "Interceptors", + }, + { + type: "link", + href: "/docs/handling_errors", + text: "त्रुटियों से निपटना", + }, + { + type: "link", + href: "/docs/cancellation", + text: "रद्द करना", + }, + { + type: "link", + href: "/docs/urlencoded", + text: "🆕 URL-एन्कोडिंग", + }, + { + type: "link", + href: "/docs/multipart", + text: "🆕 मल्टीपार्ट बॉडीज़", + }, + { + type: "heading", + text: "अन्य", + }, + { + type: "link", + href: "/docs/notes", + text: "नोट्स", + }, + { + type: "heading", + text: "सहयोजक", + }, + { + type: "link", + href: "/docs/sponsor", + text: "Axios के प्रायोजक", + }, + { + type: "link", + href: "https://github.com/axios/axios/blob/v1.x/CODE_OF_CONDUCT.md", + text: "आचार संहिता", + }, + { + type: "link", + href: "https://github.com/axios/axios/blob/v1.x/COLLABORATOR_GUIDE.md", + text: "सहयोगी मार्गदर्शिका", + }, + { + type: "link", + href: "https://github.com/axios/axios/blob/v1.x/CONTRIBUTING.md", + text: "Axios में योगदान", + }, + { + type: "link", + href: "/docs/translating", + text: "इन दस्तावेज़ों का अनुवाद", + }, + ], +}; diff --git a/inert.config.js b/inert.config.js index 8a9dd2a..53eb960 100644 --- a/inert.config.js +++ b/inert.config.js @@ -16,6 +16,7 @@ const { const fs = require("fs"); +const hiConfig = require("./hi.lang.js"); const arConfig = require("./ar.lang.js"); const enConfig = require("./en.lang.js"); const deConfig = require("./de.lang.js"); @@ -88,6 +89,12 @@ const langs = [ prefix: "/fr/", config: frConfig, }, + { + dir: "ltr", + name: "हिंदी", + prefix: '/hi/', + config: hiConfig + }, { dir: "ltr", name: "Türkçe", diff --git a/posts/hi/api_intro.md b/posts/hi/api_intro.md new file mode 100644 index 0000000..39df4dc --- /dev/null +++ b/posts/hi/api_intro.md @@ -0,0 +1,59 @@ +--- +title: 'एक्सियोस एपीआई' +description: 'एक्सियोस एपीआई संदर्भ' +prev_title: 'पोस्ट अनुरोध' +prev_link: '/docs/post_example' +next_title: 'एक्सियोस इंस्टेंस' +next_link: '/docs/instance' +--- + +संबंधित कॉन्फ़िगरेशन को `axios` में पास करके अनुरोध किए जा सकते हैं। + +##### axios(config) + +```js +// एक पोस्ट अनुरोध भेजें +axios({ +method: 'post', +url: '/user/12345', +data: { +firstName: 'Fred', +lastName: 'Flintstone' +} +}); +``` + +```js +// node.js में दूरस्थ छवि के लिए GET अनुरोध +axios({ +method: 'get', +url: 'http://bit.ly/2mTM3nY', +responseType: 'stream' +}) +.then(function (response) { +response.data.pipe(fs.createWriteStream('ada_lovelace.jpg')) +}); +``` + +#### axios(url[, config]) + +```js +// एक GET अनुरोध भेजें (डिफ़ॉल्ट विधि) +axios('/user/12345'); +``` + +### अनुरोध विधि उपनाम + +सुविधा के लिए सभी समर्थित अनुरोध विधियों के लिए उपनाम प्रदान किए गए हैं। + +##### axios.request(config) +##### axios.get(url[, config]) +##### axios.delete(url[, config]) +##### axios.head(url[, config]) +##### axios.options(url[, config]) +##### axios.post(url[, data[, config]]) +##### axios.put(url[, data[, config]]) +##### axios.patch(url[, data[, config]]) +##### axios.postForm(url[, data[, config]]) +##### axios.putForm(url[, data[, config]]) +##### axios.patchForm(url[, data[, config]]) उपनाम विधियों `url`, `method`, और `data` का उपयोग करते समय गुणों को कॉन्फ़िगरेशन में निर्दिष्ट करने की आवश्यकता नहीं होती है। \ No newline at end of file diff --git a/posts/hi/cancellation.md b/posts/hi/cancellation.md new file mode 100644 index 0000000..12b1de8 --- /dev/null +++ b/posts/hi/cancellation.md @@ -0,0 +1,144 @@ +--- +title: 'कैन्सीलेशन' +prev_title: 'त्रुटियों का प्रबंधन' +prev_link: '/docs/handling_errors' +next_title: 'URL-एन्कोडिंग निकाय' +next_link: '/docs/urlencoded' +--- + +## अनुरोध रद्द करना + +axios कॉल में `timeout` गुण सेट करने से **प्रतिक्रिया** से संबंधित टाइमआउट प्रबंधित होते हैं। + +कुछ मामलों में (जैसे नेटवर्क कनेक्शन अनुपलब्ध हो जाता है) axios कॉल को **कनेक्शन** को जल्दी रद्द करने से लाभ होगा। रद्दीकरण के बिना, axios कॉल तब तक रुकी रह सकती है जब तक कि पैरेंट कोड/स्टैक का समय समाप्त न हो जाए (सर्वर-साइड एप्लिकेशन में कुछ मिनट लग सकते हैं)। + +एक्सियोस कॉल को समाप्त करने के लिए आप निम्नलिखित विधियों का उपयोग कर सकते हैं: +- `signal` +- `cancelToken` (अप्रचलित) + +`timeout` और रद्दीकरण विधि (जैसे `signal`) को मिलाकर **प्रतिक्रिया** से संबंधित समयबाह्य और **कनेक्शन** से संबंधित समयबाह्य को कवर किया जाना चाहिए। + +### `signal`: AbortController + +`v0.22.0` से शुरू होकर, एक्सियोस फ़ेच API तरीके से अनुरोधों को रद्द करने के लिए [`AbortController`](https://developer.mozilla.org/en-US/docs/Web/API/AbortController) का समर्थन करता है: + +```js +const controller = new AbortController(); + +axios.get('/foo/bar', { +signal: controller.signal +}).then(function(response) { +//... +}); +// अनुरोध रद्द करें +controller.abort() +``` + +नवीनतम [`AbortSignal.timeout()`](https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal/timeout) API [nodejs 17.3+] का उपयोग करके टाइमआउट वाला उदाहरण: +```js +axios.get('/foo/bar', { +signal: AbortSignal.timeout(5000) //5 सेकंड के बाद अनुरोध रद्द करता है +}).then(function(response) { +//... +}); +``` + +टाइमआउट सहायक फ़ंक्शन वाला उदाहरण: +```js +function newAbortSignal(timeoutMs) { +const abortController = new AbortController(); +setTimeout(() => abortController.abort(), timeoutMs || 0); + +return abortController.signal; +} + +axios.get('/foo/bar', { +signal: newAbortSignal(5000) //5 सेकंड के बाद अनुरोध निरस्त करता है +}).then(function(response) { +//... +}); +``` + +### CancelToken `deprecated` + +आप *CancelToken* का उपयोग करके भी अनुरोध रद्द कर सकते हैं। + +> Axios कैंसल टोकन API, वापस लिए गए [कैंसलेबल प्रॉमिस प्रस्ताव](https://github.com/tc39/proposal-cancelable-promises) पर आधारित है। + +> यह API `v0.22.0` से बंद है और इसे नए प्रोजेक्ट में इस्तेमाल नहीं किया जाना चाहिए। + +आप `CancelToken.source` फ़ैक्टरी का उपयोग करके एक कैंसल टोकन बना सकते हैं, जैसा कि नीचे दिखाया गया है: + +```js +const CancelToken = axios.CancelToken; +const source = CancelToken.source(); + +axios.get('/user/12345', { +cancelToken: source.token +}).catch(function (thrown) { +if (axios.isCancel(thrown)) { +console.log('अनुरोध रद्द', thrown.message); +} else { +// त्रुटि संभालें +} +}); + +axios.post('/user/12345', { +name: 'नया नाम' +}, { +cancelToken: source.token +}) + +// अनुरोध रद्द करें (संदेश पैरामीटर वैकल्पिक है) +source.cancel('उपयोगकर्ता द्वारा कार्रवाई रद्द कर दी गई।'); +``` + +आप `CancelToken` कंस्ट्रक्टर में एक निष्पादक फ़ंक्शन पास करके एक रद्द टोकन भी बना सकते हैं: + +```js +const CancelToken = axios.CancelToken; +let cancel; + +axios.get('/user/12345', { +cancelToken: new CancelToken(function executor(c) { +// एक निष्पादक फ़ंक्शन एक पैरामीटर के रूप में एक रद्द फ़ंक्शन प्राप्त करता है +cancel = c; +}) +}); + +// अनुरोध रद्द करें +cancel(); +``` + +> नोट: आप एक ही रद्द टोकन/सिग्नल से कई अनुरोध रद्द कर सकते हैं। + +संक्रमण अवधि के दौरान, आप एक ही अनुरोध के लिए भी, दोनों रद्दीकरण API का उपयोग कर सकते हैं: + +```js +const controller = new AbortController(); + +const CancelToken = axios.CancelToken; +const source = CancelToken.source(); + +axios.get('/user/12345', { +cancelToken: source.token, +signal: controller.signal +}).catch(function (thrown) { +if (axios.isCancel(thrown)) { +console.log('अनुरोध रद्द', thrown.message); +} else { +// त्रुटि हैंडल करें +} +}); + +axios.post('/user/12345', { +name: 'नया नाम' +}, { +cancelToken: source.token +}) + +// अनुरोध रद्द करें (संदेश पैरामीटर वैकल्पिक है) +source.cancel('उपयोगकर्ता द्वारा कार्रवाई रद्द कर दी गई।'); +// या +controller.abort(); // संदेश पैरामीटर समर्थित नहीं है +``` \ No newline at end of file diff --git a/posts/hi/config_defaults.md b/posts/hi/config_defaults.md new file mode 100644 index 0000000..1de1137 --- /dev/null +++ b/posts/hi/config_defaults.md @@ -0,0 +1,50 @@ +--- +title: 'कॉन्फ़िगरेशन डिफ़ॉल्ट' +prev_title: 'प्रतिक्रिया स्कीमा' +prev_link: '/docs/res_schema' +next_title: 'इंटरसेप्टर' +next_link: '/docs/interceptors' +--- + +## कॉन्फ़िगरेशन डिफ़ॉल्ट + +आप कॉन्फ़िगरेशन डिफ़ॉल्ट निर्दिष्ट कर सकते हैं जो प्रत्येक अनुरोध पर लागू होंगे। + +### वैश्विक axios डिफ़ॉल्ट + +```js +axios.defaults.baseURL = 'https://api.example.com'; +axios.defaults.headers.common['Authorization'] = AUTH_TOKEN; +axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'; +``` + +### कस्टम इंस्टेंस डिफ़ॉल्ट + +```js +// इंस्टेंस बनाते समय कॉन्फ़िगरेशन डिफ़ॉल्ट सेट करें +const instance = axios.create({ +baseURL: 'https://api.example.com' +}); + +/ इंस्टेंस बनने के बाद डिफ़ॉल्ट बदलें +instance.defaults.headers.common['Authorization'] = AUTH_TOKEN; +``` + +### कॉन्फ़िगरेशन वरीयता क्रम + +कॉन्फ़िगरेशन को वरीयता क्रम के साथ मर्ज किया जाएगा। यह क्रम [lib/defaults/index.js](https://github.com/axios/axios/blob/v1.x/lib/defaults/index.js) में पाए जाने वाले लाइब्रेरी डिफ़ॉल्ट के अनुसार होगा, फिर इंस्टेंस की `defaults` प्रॉपर्टी, और अंत में अनुरोध के लिए `config` तर्क। बाद वाले को पहले वाले पर वरीयता दी जाएगी। यहाँ एक उदाहरण दिया गया है। + +```js +// लाइब्रेरी द्वारा प्रदान किए गए कॉन्फ़िगरेशन डिफ़ॉल्ट का उपयोग करके एक इंस्टेंस बनाएँ +// इस समय टाइमआउट कॉन्फ़िगरेशन मान `0` है, जैसा कि लाइब्रेरी के लिए डिफ़ॉल्ट है +const instance = axios.create(); + +/ लाइब्रेरी के लिए टाइमआउट डिफ़ॉल्ट को ओवरराइड करें +// अब इस इंस्टेंस का उपयोग करने वाले सभी अनुरोध टाइमआउट से पहले 2.5 सेकंड प्रतीक्षा करेंगे +instance.defaults.timeout = 2500; + +/ इस अनुरोध के लिए टाइमआउट ओवरराइड करें क्योंकि यह ज्ञात है कि इसमें लंबा समय लगता है +instance.get('/longRequest', { +timeout: 5000 +}); +``` \ No newline at end of file diff --git a/posts/hi/example.md b/posts/hi/example.md new file mode 100644 index 0000000..9438381 --- /dev/null +++ b/posts/hi/example.md @@ -0,0 +1,67 @@ +--- +title: 'न्यूनतम उदाहरण' +description: 'axios के उपयोग का एक छोटा सा उदाहरण' +prev_title: 'परिचय' +prev_link: '/docs/intro' +next_title: 'POST अनुरोध' +next_link: '/docs/post_example' +--- + +## नोट: CommonJS उपयोग +`require()` के साथ CommonJS आयातों का उपयोग करते समय TypeScript टाइपिंग (intellisense / स्वतः पूर्ण के लिए) प्राप्त करने के लिए, निम्नलिखित विधि का उपयोग करें: + +```js +const axios = require('axios').default; + +// axios. अब स्वतः पूर्ण और पैरामीटर टाइपिंग प्रदान करेगा +``` + +# उदाहरण + +`GET` अनुरोध निष्पादित करना + +```js +const axios = require('axios'); + +// किसी दिए गए आईडी वाले उपयोगकर्ता के लिए अनुरोध करें +axios.get('/user?ID=12345') +.then(function (response) { +// सफलता को संभालें +console.log(response); +}) +.catch(function (error) { +// त्रुटि को संभालें +console.log(error); +}) +.finally(function () { +// हमेशा निष्पादित +}); + +// वैकल्पिक रूप से, उपरोक्त अनुरोध इस प्रकार भी किया जा सकता है +axios.get('/user', { +पैरामीटर: { +ID: 12345 +} +}) +.then(function (response) { +console.log(response); +}) +.catch(function (error) { +console.log(error); +}) +.finally(function () { +// हमेशा निष्पादित +}); + +// async/await का उपयोग करना चाहते हैं? अपने बाहरी फ़ंक्शन/विधि में `async` कीवर्ड जोड़ें। +async फ़ंक्शन getUser() { +try { +const response = await axios.get('/user?ID=12345'); +console.log(response); +} catch (error) { +console.error(error); +} +} +``` + +> **नोट:** `async/await` ECMAScript 2017 का हिस्सा है और इंटरनेट एक्सप्लोरर और पुराने ब्राउज़र में समर्थित नहीं है, इसलिए सावधानी से उपयोग करें। \ No newline at end of file diff --git a/posts/hi/handling_errors.md b/posts/hi/handling_errors.md new file mode 100644 index 0000000..687ff45 --- /dev/null +++ b/posts/hi/handling_errors.md @@ -0,0 +1,55 @@ +--- +title: 'त्रुटियों का प्रबंधन' +prev_title: 'इंटरसेप्टर' +prev_link: '/docs/interceptors' +next_title: 'रद्दीकरण' +next_link: '/docs/रद्दीकरण' +--- + +एक्सियोस त्रुटियों की सामान्य संरचना इस प्रकार है: +- **संदेश** - त्रुटि संदेश और उसकी विफलता की स्थिति का एक संक्षिप्त सारांश। +- **नाम** - यह परिभाषित करता है कि त्रुटि कहाँ से उत्पन्न हुई। एक्सियोस के लिए, यह हमेशा एक 'एक्सियोस त्रुटि' होगी। +- **स्टैक** - त्रुटि का स्टैक ट्रेस प्रदान करता है। +- **कॉन्फ़िगरेशन** - एक एक्सियोस कॉन्फ़िगरेशन ऑब्जेक्ट जिसमें अनुरोध किए जाने के समय से उपयोगकर्ता द्वारा परिभाषित विशिष्ट इंस्टेंस कॉन्फ़िगरेशन होते हैं। +- **कोड** - एक्सियोस द्वारा पहचानी गई त्रुटि को दर्शाता है। नीचे दी गई तालिका आंतरिक एक्सियोस त्रुटि की विशिष्ट परिभाषाओं को सूचीबद्ध करती है। +- **स्थिति** - HTTP प्रतिक्रिया स्थिति कोड। सामान्य HTTP प्रतिक्रिया स्थिति कोड अर्थों के लिए [यहाँ](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes) देखें। +```js +axios.get('/user/12345') +.catch(function (error) { +अगर (error.response) { +// अनुरोध किया गया और सर्वर ने एक स्थिति कोड के साथ प्रतिक्रिया दी +/जो 2xx की सीमा से बाहर है +console.log(error.response.data); +console.log(error.response.status); +console.log(error.response.headers); +} वरना अगर (error.request) { +// अनुरोध किया गया लेकिन कोई प्रतिक्रिया नहीं मिली +/`error.request` ब्राउज़र में XMLHttpRequest का एक उदाहरण है और +/ node.js में http.ClientRequest का एक उदाहरण है +console.log(error.request); +} वरना { +// अनुरोध सेट करते समय कुछ ऐसा हुआ जिससे एक त्रुटि उत्पन्न हुई +console.log('Error', error.message); +} +console.log(error.config); +}); +``` + +`validateStatus` कॉन्फ़िगरेशन विकल्प का उपयोग करके, आप HTTP कोड निर्धारित कर सकते हैं जो त्रुटि उत्पन्न करेगा। + +```js +axios.get('/user/12345', { +validateStatus: function (status) { +return status < 500; // केवल तभी हल करें जब स्थिति कोड 500 से कम हो +} +}) +``` + +`toJSON` का उपयोग करके, आपको HTTP त्रुटि के बारे में अधिक जानकारी वाला एक ऑब्जेक्ट मिलता है। + +```js +axios.get('/user/12345') +.catch(function (error) { +console.log(error.toJSON()); +}); +``` \ No newline at end of file diff --git a/posts/hi/instance.md b/posts/hi/instance.md new file mode 100644 index 0000000..ad8a9f4 --- /dev/null +++ b/posts/hi/instance.md @@ -0,0 +1,62 @@ +--- +title: 'Axios इंस्टेंस' +prev_title: 'Axios API' +prev_link: '/docs/api_intro' +next_title: 'रिक्वेस्ट कॉन्फ़िगरेशन' +next_link: '/docs/req_config' +--- + +### इंस्टेंस बनाना + +आप कस्टम कॉन्फ़िगरेशन के साथ axios का एक नया इंस्टेंस बना सकते हैं। + +##### axios.create([config]) + +```js +const instance = axios.create({ +baseURL: 'https://some-domain.com/api/', +timeout: 1000, +headers: {'X-Custom-Header': 'foobar'} +}); +``` + +### इंस्टेंस विधियाँ + +उपलब्ध इंस्टेंस विधियाँ नीचे सूचीबद्ध हैं। निर्दिष्ट कॉन्फ़िगरेशन को इंस्टेंस कॉन्फ़िगरेशन के साथ मर्ज कर दिया जाएगा। + +##### axios#request(config) +##### axios#get(url[, config]) +##### axios#delete(url[, config]) +##### axios#head(url[, config]) +##### axios#options(url[, config]) +##### axios#post(url[, data[, config]]) +##### axios#put(url[, data[, config]]) +##### axios#patch(url[, data[, config]]) +##### axios#getUri([config]) + +### कॉन्फ़िगरेशन ऑब्जेक्ट के साथ इंस्टेंस को कॉल करना + +`instance.get()` या `instance.post()` जैसी सुविधाजनक विधियों का उपयोग करने के अलावा, आप कॉन्फ़िगरेशन ऑब्जेक्ट के साथ सीधे Axios इंस्टेंस को भी कॉल कर सकते हैं। यह कार्यात्मक रूप से `axios(config)` के समतुल्य है, और मूल कॉन्फ़िगरेशन का उपयोग करके किसी अनुरोध का पुनः प्रयास करते समय विशेष रूप से उपयोगी है। + +```js +const instance = axios.create({ baseURL: '/api' }); + +// axios(config) की तरह ही कार्य करता है +instance({ +url: '/users', +method: 'get' +}); +``` + +यह दृष्टिकोण प्रमाणीकरण त्रुटियों को संभालते समय स्वच्छ पुनः प्रयास तर्क को सक्षम करता है: + +```js +instance.interceptors.response.use(undefined, async (error) => { +if (error.response?.status === 401) { +await refreshToken(); +return instance(error.config); // मूल अनुरोध का पुनः प्रयास करें +} + +throw error; +}); +``` \ No newline at end of file diff --git a/posts/hi/interceptors.md b/posts/hi/interceptors.md new file mode 100644 index 0000000..b5cafa6 --- /dev/null +++ b/posts/hi/interceptors.md @@ -0,0 +1,55 @@ +--- +title: 'इंटरसेप्टर' +prev_title: 'कॉन्फ़िगरेशन डिफ़ॉल्ट' +prev_link: '/docs/config_defaults' +next_title: 'त्रुटियों का प्रबंधन' +next_link: '/docs/handling_errors' +--- + +आप अनुरोधों या प्रतिक्रियाओं को `then` या `catch` द्वारा प्रबंधित किए जाने से **पहले** इंटरसेप्ट कर सकते हैं। + +`use` फ़ंक्शन, प्रॉमिस के पूरा होने या अस्वीकार होने पर चलाए जाने वाले हैंडलर्स की सूची में एक हैंडलर जोड़ता है। हैंडलर को पूरे और अस्वीकृत फ़ंक्शन द्वारा परिभाषित किया जाता है। + +एक वैकल्पिक `options` ऑब्जेक्ट है जिसे तीसरे पैरामीटर के रूप में पास किया जा सकता है। यदि सिंक्रोनस विकल्प सत्य है, तो `synchronous`। यदि सिंक्रोनस विकल्प असत्य है, तो हैंडलर को एसिंक्रोनस के रूप में परिभाषित किया जाता है। यदि सिंक्रोनस विकल्प प्रदान नहीं किया गया है, तो हैंडलर को एसिंक्रोनस के रूप में परिभाषित किया जाता है। `runWhen` यह नियंत्रित करेगा कि प्रदान किया गया इंटरसेप्टर कब चलेगा। एक ऐसा फ़ंक्शन प्रदान करें जो यह तय करेगा कि उसे चलना चाहिए या नहीं, यह true या false लौटाएगा, डिफ़ॉल्ट रूप से हमेशा true होता है। + +```js +// एक अनुरोध इंटरसेप्टर जोड़ें +axios.interceptors.request.use(function (config) { +// अनुरोध भेजे जाने से पहले कुछ करें +return config; +}, function (error) { +// अनुरोध त्रुटि के साथ कुछ करें +return Promise.reject(error); +}, +{ synchronous: true, runWhen: () => /* यह फ़ंक्शन true लौटाता है */} +); + +/ एक प्रतिक्रिया इंटरसेप्टर जोड़ें +axios.interceptors.response.use(function onFulfilled(response) { +/ 2xx की सीमा के भीतर आने वाला कोई भी स्थिति कोड इस फ़ंक्शन को ट्रिगर करता है +/ प्रतिक्रिया डेटा के साथ कुछ करें +return response; +}, function onRejected(error) { +/ 2xx की सीमा से बाहर आने वाला कोई भी स्थिति कोड इस फ़ंक्शन को ट्रिगर करता है +/ प्रतिक्रिया त्रुटि के साथ कुछ करें +return Promise.reject(error); +}); +``` + +सामान्य परिस्थितियों में, `onFulfilled` प्रतिक्रिया इंटरसेप्टर केवल 2xx रेंज में प्रतिक्रियाओं के लिए ही कॉल किया जाता है, अन्यथा `onRejected` को कॉल किया जाता है। +हालाँकि, यह व्यवहार [validateStatus](/docs/req_config) पर निर्भर करता है। +उदाहरण के लिए, यदि `validateStatus` को हमेशा `true` लौटाने के लिए सेट किया गया है, तो `onFulfilled` को *सभी* प्रतिक्रियाओं के लिए कॉल किया जाएगा। + +यदि आपको बाद में किसी इंटरसेप्टर को हटाने की आवश्यकता हो, तो आप ऐसा कर सकते हैं। + +```js +const myInterceptor = axios.interceptors.request.use(function () {/*...*/}); +axios.interceptors.request.eject(myInterceptor); +``` + +आप axios के कस्टम इंस्टेंस में इंटरसेप्टर जोड़ सकते हैं। + +```js +const instance = axios.create(); +instance.interceptors.request.use(फ़ंक्शन () {/*...*/}); +``` \ No newline at end of file diff --git a/posts/hi/intro.md b/posts/hi/intro.md new file mode 100644 index 0000000..35b8426 --- /dev/null +++ b/posts/hi/intro.md @@ -0,0 +1,74 @@ +--- +title: 'आरंभ करें' +description: 'ब्राउज़र और node.js के लिए Promise-आधारित HTTP क्लाइंट' +next_title: 'न्यूनतम उदाहरण' +next_link: '/docs/example' +--- + +# Axios क्या है? +Axios [`node.js`](https://nodejs.org) और ब्राउज़र के लिए एक *[promise-आधारित](https://javascript.info/promise-basics)* HTTP क्लाइंट है। यह *[isomorphic](https://www.lullabot.com/articles/what-is-an-isomorphic-application)* है (= यह ब्राउज़र और node.js में समान कोडबेस के साथ चल सकता है)। सर्वर-साइड पर यह मूल node.js `http` मॉड्यूल का उपयोग करता है, जबकि क्लाइंट (ब्राउज़र) पर यह XMLHttpRequest का उपयोग करता है। + +# विशेषताएँ + +- ब्राउज़र से [XMLHttpRequest](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest) बनाएँ +- node.js से [http](http://nodejs.org/api/http.html) अनुरोध बनाएँ +- [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) API का समर्थन करता है +- अनुरोध और प्रतिक्रिया को इंटरसेप्ट करें +- अनुरोध और प्रतिक्रिया डेटा को रूपांतरित करें +- अनुरोध रद्द करें +- टाइमआउट +- नेस्टेड प्रविष्टियों के समर्थन के साथ क्वेरी पैरामीटर क्रमांकन +- स्वचालित अनुरोध बॉडी क्रमांकन: +- JSON (`application/json`) +- मल्टीपार्ट / फ़ॉर्मडेटा (`multipart/form-data`) +- URL एन्कोडेड फ़ॉर्म (`application/x-www-form-urlencoded`) +- HTML फ़ॉर्म को JSON के रूप में पोस्ट करना +- स्वचालित प्रतिक्रिया में JSON डेटा प्रबंधन +- ब्राउज़र और node.js के लिए अतिरिक्त जानकारी (गति दर, शेष समय) के साथ प्रगति कैप्चरिंग +- node.js के लिए बैंडविड्थ सीमाएँ निर्धारित करना +- विनिर्देश-अनुपालक FormData और Blob (`node.js` सहित) के साथ संगत +- [XSRF](http://en.wikipedia.org/wiki/Cross-site_request_forgery) से सुरक्षा के लिए क्लाइंट-साइड समर्थन + +# इंस्टॉल करना + +npm का उपयोग: + +```bash +$ npm install axios +``` + +bower का उपयोग: + +```bash +$ bower install axios +``` + +yarn का उपयोग: + +```bash +$ yarn add axios +``` + +pnpm का उपयोग: + +```bash +$ pnpm add axios +``` + +jsDelivr CDN का उपयोग: + +```html + +``` + +unpkg CDN का उपयोग: + +```html + +``` +आवश्यकता के साथ सीधे आयात के लिए पूर्व-निर्मित CommonJS मॉड्यूल (यदि आपका मॉड्यूल बंडलर उन्हें स्वचालित रूप से हल करने में विफल रहा है) + +```js +const axios = require('axios/dist/browser/axios.cjs'); // ब्राउज़र +const axios = require('axios/dist/node/axios.cjs'); // नोड +``` \ No newline at end of file diff --git a/posts/hi/multipart.md b/posts/hi/multipart.md new file mode 100644 index 0000000..7918b49 --- /dev/null +++ b/posts/hi/multipart.md @@ -0,0 +1,170 @@ +--- +title: 'मल्टीपार्ट बॉडीज़' +prev_title: 'यूआरएल-एन्कोडिंग बॉडीज़' +prev_link: '/docs/urlencoded' +next_title: 'नोट्स' +next_link: '/docs/notes' +--- + +## डेटा को `मल्टीपार्ट/फ़ॉर्म-डेटा` के रूप में पोस्ट करना + +### फ़ॉर्मडेटा एपीआई का उपयोग करना + +#### ब्राउज़र + +```js +const form = new FormData(); +form.append('my_field', 'my value'); +form.append('my_buffer', new Blob([1,2,3])); +form.append('my_file', fileInput.files[0]); + +axios.post('https://example.com', फ़ॉर्म) +``` + +आंतरिक Axios सीरियलाइज़र और संबंधित शॉर्टहैंड विधि का उपयोग करके भी यही परिणाम प्राप्त किया जा सकता है: + +```js +axios.postForm('https://httpbin.org/post', { +my_field: 'my value', +my_buffer: new Blob([1,2,3]), +my_file: fileInput.files // FileList को अलग-अलग फ़ील्ड के रूप में अनरैप किया जाएगा +}); +``` + +HTML फ़ॉर्म को सीधे अनुरोध पेलोड के रूप में पास किया जा सकता है। + +#### Node.js + +```js +'axios' से axios आयात करें; + +const form = new FormData(); +form.append('my_field', 'my value'); +form.append('my_buffer', new Blob(['some content'])); + +axios.post('https://example.com', फ़ॉर्म) +``` + +चूँकि node.js वर्तमान में किसी फ़ाइल से `Blob` बनाने का समर्थन नहीं करता है, आप इस उद्देश्य के लिए किसी तृतीय-पक्ष पैकेज का उपयोग कर सकते हैं। + +```js +'formdata-node/file-from-path' से {fileFromPath} आयात करें + +form.append('my_field', 'my value'); +form.append('my_file', await fileFromPath('/foo/bar.jpg')); + +axios.post('https://example.com', फ़ॉर्म) +``` + +`v1.3.0` से पुराने Axios के लिए, आपको `form-data` पैकेज आयात करना होगा। + +```js +const FormData = require('form-data'); + +const form = new FormData(); +form.append('my_field', 'my value'); +form.append('my_buffer', new Buffer(10)); +form.append('my_file', fs.createReadStream('/foo/bar.jpg')); + +axios.post('https://example.com', form) +``` + +### 🆕 स्वचालित क्रमांकन + +`v0.27.0` से शुरू होकर, Axios, FormData +ऑब्जेक्ट में स्वचालित ऑब्जेक्ट क्रमांकन का समर्थन करता है, यदि अनुरोध Content-Type हेडर `multipart/form-data` पर सेट है। + +निम्नलिखित अनुरोध डेटा को FormData प्रारूप (ब्राउज़र और Node.js) में सबमिट करेगा: + +```js +'axios' से axios आयात करें; + +axios.post('https://httpbin.org/post', { +उपयोगकर्ता: { +नाम: 'दिमित्री' +}, +फ़ाइल: fs.createReadStream('/foo/bar.jpg') +}, { +शीर्षलेख: { +'सामग्री-प्रकार': 'मल्टीपार्ट/फ़ॉर्म-डेटा' +} +}).then(({data})=> console.log(data)); +``` + +Axios FormData serializer निम्नलिखित ऑपरेशन करने के लिए कुछ विशेष अंत का समर्थन करता है: + +- `{}` - JSON.stringify के साथ मान को क्रमबद्ध करें +- `[]` - सरणी-जैसे ऑब्जेक्ट को समान कुंजी वाले अलग-अलग फ़ील्ड के रूप में अनरैप करें + +> नोट: +> अनरैप/विस्तार ऑपरेशन डिफ़ॉल्ट रूप से सरणी और FileList ऑब्जेक्ट पर उपयोग किया जाएगा + +FormData serializer दुर्लभ मामलों को संभालने के लिए `config.formSerializer: object` प्रॉपर्टी के माध्यम से अतिरिक्त विकल्पों का समर्थन करता है: + +- `visitor: Function` - उपयोगकर्ता-निर्धारित विज़िटर फ़ंक्शन जिसे कस्टम नियमों का पालन करके डेटा ऑब्जेक्ट को क्रमबद्ध करने के लिए पुनरावर्ती रूप से कॉल किया जाएगा +एक `FormData` ऑब्जेक्ट में। + +- `dots: boolean = false` - सरणी और ऑब्जेक्ट को क्रमबद्ध करने के लिए कोष्ठक के बजाय बिंदु संकेतन का उपयोग करें; + +- `metaTokens: boolean = true` - FormData कुंजी में विशेष अंत (जैसे `user{}: '{"name": "John"}'`) जोड़ें। +बैक-एंड बॉडी-पार्सर संभवतः इस मेटा-सूचना का उपयोग JSON के रूप में मान को स्वचालित रूप से पार्स करने के लिए कर सकता है। + +- `indexes: null|false|true = false` - नियंत्रित करता है कि `flat` सरणी-जैसे ऑब्जेक्ट्स की अनरैप्ड कुंजियों में इंडेक्स कैसे जोड़े जाएँगे। + +- `null` - कोष्ठक न जोड़ें (`arr: 1`, `arr: 2`, `arr: 3`) +- `false`(डिफ़ॉल्ट) - रिक्त कोष्ठक जोड़ें (`arr[]: 1`, `arr[]: 2`, `arr[]: 3`) +- `true` - इंडेक्स के साथ कोष्ठक जोड़ें (`arr[0]: 1`, `arr[1]: 2`, `arr[2]: 3`) + +मान लीजिए हमारे पास इस तरह का एक ऑब्जेक्ट है: + +```js +const obj = { +x: 1, +arr: [1, 2, 3], +arr2: [1, [2], 3], +उपयोगकर्ता: [{नाम: 'पीटर', उपनाम: 'ग्रिफिन'}, {नाम: 'थॉमस', उपनाम: 'एंडरसन'}], +'obj2{}': [{x:1}] +}; +``` + +निम्नलिखित चरण Axios सीरियलाइज़र द्वारा आंतरिक रूप से निष्पादित किए जाएँगे: + +```js +const formData= new FormData(); +formData.append('x', '1'); +formData.append('arr[]', '1'); +formData.append('arr[]', '2'); +formData.append('arr[]', '3'); +formData.append('arr2[0]', '1'); +formData.append('arr2[1][0]', '2'); +formData.append('arr2[2]', '3'); +formData.append('users[0][name]', 'पीटर'); +formData.append('users[0][surname]', 'ग्रिफिन'); +formData.append('users[1][name]', 'थॉमस'); +formData.append('users[1][surname]', 'एंडरसन'); +formData.append('obj2{}', '[{"x":1}]'); +``` + +```js +'axios' से axios आयात करें; + +axios.post('https://httpbin.org/post', { +'myObj{}': {x: 1, s: "foo"}, +'files[]': document.querySelector('#fileInput').files +}, { +headers: { +'Content-Type': 'multipart/form-data' +} +}).then(({data})=> console.log(data)); +``` + +Axios निम्नलिखित शॉर्टकट विधियों का समर्थन करता है: `postForm`, `putForm`, `patchForm` +जो कि संबंधित http विधियाँ हैं जिनका content-type हेडर `multipart/form-data` पर प्रीसेट है। + +`FileList` ऑब्जेक्ट को सीधे पास किया जा सकता है: + +```js +await axios.postForm('https://httpbin.org/post', document.querySelector('#fileInput').files) +``` + +सभी फ़ाइलें समान फ़ील्ड नामों के साथ भेजी जाएँगी: `files[]`; \ No newline at end of file diff --git a/posts/hi/notes.md b/posts/hi/notes.md new file mode 100644 index 0000000..6946193 --- /dev/null +++ b/posts/hi/notes.md @@ -0,0 +1,39 @@ +--- +title: 'नोट्स' +description: 'इसे पूर्ण करने के लिए कुछ और नोट्स' +prev_title: 'URL-एन्कोडिंग बॉडीज़' +prev_link: '/docs/urlencoded' +--- + +## Semver + +जब तक axios `1.0` रिलीज़ तक नहीं पहुँच जाता, तब तक ब्रेकिंग परिवर्तन एक नए माइनर संस्करण के साथ जारी किए जाएँगे। उदाहरण के लिए, `0.5.1` और `0.5.4` में एक ही API होगा, लेकिन `0.6.0` में ब्रेकिंग परिवर्तन होंगे। + +## Promises + +axios [समर्थित](http://caniuse.com/promises) होने के लिए एक मूल ES6 प्रॉमिस कार्यान्वयन पर निर्भर करता है। + +यदि आपका परिवेश ES6 प्रॉमिस का समर्थन नहीं करता है, तो आप [पॉलीफ़िल](https://github.com/jakearchibald/es6-promise) कर सकते हैं। + +## टाइपस्क्रिप्ट +axios में [टाइपस्क्रिप्ट](http://typescriptlang.org) परिभाषाएँ शामिल हैं। +```टाइपस्क्रिप्ट +'axios' से axios आयात करें; +axios.get('/user?ID=12345'); +``` + +## संसाधन + +* [चेंजलॉग](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md) +* [अपग्रेड गाइड](https://github.com/axios/axios/blob/v1.x/UPGRADE_GUIDE.md) +* [इकोसिस्टम](https://github.com/axios/axios/blob/v1.x/ECOSYSTEM.md) +* [योगदान गाइड](https://github.com/axios/axios/blob/v1.x/CONTRIBUTING.md) +* [आचार संहिता](https://github.com/axios/axios/blob/v1.x/CODE_OF_CONDUCT.md) + +## श्रेय + +axios [$http [Angular](https://angularjs.org/) में प्रदान की गई सेवा](https://docs.angularjs.org/api/ng/service/$http)। अंततः, Axios, Angular के बाहर उपयोग के लिए एक स्टैंडअलोन `$http` जैसी सेवा प्रदान करने का एक प्रयास है। + +## लाइसेंस + +[MIT](https://github.com/axios/axios/blob/v1.x/LICENSE) \ No newline at end of file diff --git a/posts/hi/post_example.md b/posts/hi/post_example.md new file mode 100644 index 0000000..c1cd5fb --- /dev/null +++ b/posts/hi/post_example.md @@ -0,0 +1,88 @@ +--- +title: 'POST अनुरोध' +description: 'Axios के साथ POST अनुरोध कैसे करें' +prev_title: 'न्यूनतम उदाहरण' +prev_link: '/docs/example' +next_link: '/docs/api_intro' +next_title: 'Axios API' +--- + +## `POST` अनुरोध निष्पादित करना + +### JSON + +```js +axios.post('/user', { +पहला नाम: 'Fred', +अंतिम नाम: 'Flintstone' +}) +.then(function (response) { +console.log(response); +}) +.catch(function (error) { +console.log(error); +}); +``` + +एक साथ कई अनुरोध निष्पादित करना + +```js +फ़ंक्शन getUserAccount() { +return axios.get('/user/12345'); +} + +फ़ंक्शन getUserPermissions() { +return axios.get('/user/12345/permissions'); +} + +const [acct, perm] = await Promise.all([getUserAccount(), getUserPermissions()]); + +/ या + +Promise.all([getUserAccount(), getUserPermissions()]) +.then(फ़ंक्शन ([acct, perm]) { +/ ... +}); +``` + +एक HTML फ़ॉर्म को JSON के रूप में पोस्ट करें + +```js +const {data} = await axios.post('/user', document.querySelector('#my-form'), { +हेडर: { +'Content-Type': 'application/json' +} +}) +``` + +### फ़ॉर्म + +- मल्टीपार्ट (`multipart/form-data`) + +```js +const {data} = await axios.post('https://httpbin.org/post', { +firstName: 'Fred', +lastName: 'Flintstone', +orders: [1, 2, 3], +photo: document.querySelector('#fileInput').files +}, { +हेडर: { +'Content-Type': 'multipart/form-data' +} +} +) +``` + +- URL एनकोडेड फ़ॉर्म (`application/x-www-form-urlencoded`) + +```js +const {data} = await axios.post('https://httpbin.org/post', { +firstName: 'Fred', +lastName: 'Flintstone', +orders: [1, 2, 3] +}, { +headers: { +'Content-Type': 'application/x-www-form-urlencoded' +} +}) +``` \ No newline at end of file diff --git a/posts/hi/req_config.md b/posts/hi/req_config.md new file mode 100644 index 0000000..9650fe5 --- /dev/null +++ b/posts/hi/req_config.md @@ -0,0 +1,120 @@ +--- +title: 'अनुरोध कॉन्फ़िगरेशन' +prev_title: 'Axios इंस्टेंस' +prev_link: '/docs/instance' +next_title: 'प्रतिक्रिया स्कीमा' +next_link: '/docs/res_schema' +--- + +अनुरोध करने के लिए ये उपलब्ध कॉन्फ़िगरेशन विकल्प हैं। केवल `url` आवश्यक है। यदि `method` निर्दिष्ट नहीं है, तो अनुरोध डिफ़ॉल्ट रूप से `GET` पर सेट हो जाएँगे। + +```js +{ +// `url` वह सर्वर URL है जिसका उपयोग अनुरोध के लिए किया जाएगा +url: '/user', + +// `method` वह अनुरोध विधि है जिसका उपयोग अनुरोध करते समय किया जाएगा +method: 'get', // डिफ़ॉल्ट + +// `url` के आगे `baseURL` जोड़ा जाएगा, जब तक कि `url` निरपेक्ष न हो। +// axios के किसी इंस्टेंस के लिए `baseURL` सेट करना सुविधाजनक हो सकता है ताकि उस इंस्टेंस के मेथड्स को सापेक्ष URL +/ पास किए जा सकें। +baseURL: 'https://some-domain.com/api' + +// `allowAbsoluteUrls` यह निर्धारित करता है कि निरपेक्ष URL कॉन्फ़िगर किए गए `baseUrl` को ओवरराइड करेंगे या नहीं। +// जब true (डिफ़ॉल्ट) पर सेट किया जाता है, तो `url` के निरपेक्ष मान `baseUrl` को ओवरराइड कर देंगे। +// जब false पर सेट किया जाता है, तो `url` के निरपेक्ष मान हमेशा `baseUrl` से पहले जोड़े जाएँगे। +allowAbsoluteUrls: true + +// `transformRequest` सर्वर पर भेजे जाने से पहले अनुरोध डेटा में बदलाव की अनुमति देता है। +// यह केवल अनुरोध विधियों 'PUT', 'POST', 'PATCH' और 'DELETE' के लिए लागू है। +// सरणी में अंतिम फ़ंक्शन को एक स्ट्रिंग या Buffer, ArrayBuffer का एक उदाहरण लौटाना होगा। +// FormData या Stream +// आप हेडर ऑब्जेक्ट को संशोधित कर सकते हैं। +transformRequest: [function (data, headers) { +// डेटा को रूपांतरित करने के लिए आप जो चाहें करें। + +return data; +}], + +// `transformResponse` प्रतिक्रिया डेटा में बदलाव करने की अनुमति देता है +// इसे then/catch में पास किया जाता है +transformResponse: [function (data) { +// डेटा को रूपांतरित करने के लिए आप जो चाहें करें + +return data; +}], + +// `headers` भेजे जाने वाले कस्टम हेडर हैं +headers: {'X-Requested-With': 'XMLHttpRequest'}, + +// `params` अनुरोध के साथ भेजे जाने वाले URL पैरामीटर हैं +// एक साधारण ऑब्जेक्ट या URLSearchParams ऑब्जेक्ट होना चाहिए +// नोट: जो पैरामीटर शून्य या अपरिभाषित हैं, उन्हें URL में रेंडर नहीं किया जाता है। +पैरामीटर: { +आईडी: 12345 +}, + +// `paramsSerializer` एक वैकल्पिक कॉन्फ़िगरेशन है जो `params` को क्रमबद्ध करने के लिए ज़िम्मेदार है। +पैरामीटर: { +encode?: (param: string): string => { /* यहाँ कस्टम ऑप्स करें और रूपांतरित स्ट्रिंग लौटाएँ */ }, // कस्टम एनकोडर फ़ंक्शन; कुंजी/मानों को पुनरावृत्तीय रूप में भेजता है। +serialize?: (params: Record, options?: ParamsSerializerOptions ), // 1.x से पहले के व्यवहार की नकल करता है और संपूर्ण पैरामीटर ऑब्जेक्ट को एक कस्टम सीरियलाइज़र फ़ंक्शन पर भेजता है। उपभोक्ता को यह नियंत्रित करने की अनुमति देता है कि पैरामीटर कैसे क्रमबद्ध किए जाएँ। +अनुक्रमणिकाएँ: असत्य // सरणी अनुक्रमणिका प्रारूप (शून्य - कोई कोष्ठक नहीं, असत्य (डिफ़ॉल्ट) - रिक्त कोष्ठक, सत्य - अनुक्रमणिकाओं वाले कोष्ठक) +}, + +// `data` वह डेटा है जिसे अनुरोध बॉडी के रूप में भेजा जाना है +// केवल अनुरोध विधियों 'PUT', 'POST', 'DELETE', और 'PATCH' के लिए लागू +// जब कोई `transformRequest` सेट नहीं है, तो निम्न में से किसी एक प्रकार का होना चाहिए: +// - स्ट्रिंग, सादा ऑब्जेक्ट, ArrayBuffer, ArrayBufferView, URLSearchParams +// - केवल ब्राउज़र: FormData, फ़ाइल, Blob +// - केवल नोड: स्ट्रीम, बफ़र +डेटा: { +firstName: 'Fred' +}, + +// बॉडी में डेटा भेजने के लिए सिंटैक्स विकल्प +// विधि post +// केवल मान भेजा जाता है, कुंजी नहीं +डेटा: 'Country=Brasil&City=Belo Horizonte', + +// `timeout`, मिलीसेकंड की संख्या निर्दिष्ट करता है अनुरोध का समय समाप्त हो गया है। +// यदि अनुरोध `timeout` से अधिक समय लेता है, तो अनुरोध निरस्त कर दिया जाएगा। +timeout: 1000, // डिफ़ॉल्ट `0` है (कोई समय समाप्ति नहीं) + +// `withCredentials` इंगित करता है कि क्रॉस-साइट एक्सेस-कंट्रोल अनुरोध +// क्रेडेंशियल्स का उपयोग करके किए जाने चाहिए या नहीं +withCredentials: गलत, // डिफ़ॉल्ट + +// `adapter` अनुरोधों को कस्टम हैंडलिंग की अनुमति देता है जिससे परीक्षण आसान हो जाता है। +// एक वादा लौटाएँ और एक मान्य प्रतिक्रिया प्रदान करें (lib/adapters/README.md देखें)। +adapter: फ़ंक्शन (config) { +/* ... */ +}, + +// `auth` इंगित करता है कि HTTP Basic auth का उपयोग किया जाना चाहिए, और क्रेडेंशियल प्रदान करता है। +// यह एक `Authorization` हेडर सेट करेगा, जो आपके द्वारा `headers` का उपयोग करके सेट किए गए किसी भी मौजूदा +// `Authorization` कस्टम हेडर को अधिलेखित कर देगा। +// कृपया ध्यान दें कि इस पैरामीटर के माध्यम से केवल HTTP Basic auth को कॉन्फ़िगर किया जा सकता है। + +// Bearer टोकन आदि के लिए, `Authorization` कस्टम हेडर का उपयोग करें। +auth: { +उपयोगकर्ता नाम: 'janedoe', +पासवर्ड: 's00pers3cret' +}, + +// `responseType` उस डेटा के प्रकार को इंगित करता है जिसके साथ सर्वर प्रतिक्रिया देगा +// विकल्प हैं: 'arraybuffer', 'document', 'json', 'text', 'stream' +// केवल ब्राउज़र: 'blob' +responseType: 'json', // डिफ़ॉल्ट + +// `responseEncoding` प्रतिक्रियाओं को डिकोड करने के लिए उपयोग की जाने वाली एन्कोडिंग को इंगित करता है (केवल Node.js) +// नोट: 'stream' या क्लाइंट-साइड अनुरोधों के `responseType` के लिए अनदेखा किया गया +responseEncoding: 'utf8', // डिफ़ॉल्ट + +// `xsrfCookieName`, xsrf टोकन के मान के रूप में उपयोग की जाने वाली कुकी का नाम है +xsrfCookieName: 'XSRF-TOKEN', // डिफ़ॉल्ट + +// `xsrfHeaderName`, http का नाम है xsrf टोकन मान वाला हेडर +xsrfHeaderName: 'X-XSRF-TOKEN', // डिफ़ॉल्ट + +// `onUploadProgress` अपलोड के लिए प्रगति ईवेंट को संभालने की अनुमति देता है \ No newline at end of file diff --git a/posts/hi/res_schema.md b/posts/hi/res_schema.md new file mode 100644 index 0000000..9e9b864 --- /dev/null +++ b/posts/hi/res_schema.md @@ -0,0 +1,52 @@ +--- +title: 'प्रतिक्रिया स्कीमा' +prev_title: 'अनुरोध कॉन्फ़िगरेशन' +prev_link: '/docs/req_config' +next_title: 'कॉन्फ़िगरेशन डिफ़ॉल्ट' +next_link: '/docs/config_defaults' +--- + +अनुरोध के प्रतिसाद में निम्नलिखित जानकारी होती है। + +```js +{ +// `data` सर्वर द्वारा प्रदान की गई प्रतिक्रिया है +data: {}, + +// `status` सर्वर प्रतिक्रिया से HTTP स्थिति कोड है +status: 200, + +// `statusText` सर्वर प्रतिक्रिया से HTTP स्थिति संदेश है +// HTTP/2 से स्थिति पाठ रिक्त या असमर्थित है। +// (HTTP/2 RFC: https://www.rfc-editor.org/rfc/rfc7540#section-8.1.2.4) +statusText: 'OK', + +// `headers` वे HTTP हेडर जिनके साथ सर्वर ने प्रतिक्रिया दी +// सभी हेडर नाम लोअर केस में हैं और ब्रैकेट नोटेशन का उपयोग करके एक्सेस किए जा सकते हैं। +// उदाहरण: `response.headers['content-type']` +शीर्षक: {}, + +// `config` वह कॉन्फ़िगरेशन है जो अनुरोध के लिए `axios` को प्रदान किया गया था +कॉन्फ़िगरेशन: {}, + +// `request` वह अनुरोध है जिसने यह प्रतिक्रिया उत्पन्न की +// यह node.js (रीडायरेक्ट में) में अंतिम ClientRequest इंस्टेंस है +// और ब्राउज़र में एक XMLHttpRequest इंस्टेंस है +अनुरोध: {} +} +``` + +`then` का उपयोग करते समय, आपको निम्न प्रकार से प्रतिक्रिया प्राप्त होगी: + +```js +axios.get('/user/12345') +.then(function (response) { +console.log(response.data); +console.log(response.status); +console.log(response.statusText); +console.log(response.headers); +console.log(response.config); +}); +``` + +`catch` का उपयोग करते समय, या `then` के दूसरे पैरामीटर के रूप में [अस्वीकृति कॉलबैक](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/then) पास करते समय, प्रतिक्रिया `error` ऑब्जेक्ट के माध्यम से उपलब्ध होगी, जैसा कि [त्रुटियों को संभालना](/docs/handling_errors) अनुभाग में बताया गया है। \ No newline at end of file diff --git a/posts/hi/sponsor.md b/posts/hi/sponsor.md new file mode 100644 index 0000000..3d38173 --- /dev/null +++ b/posts/hi/sponsor.md @@ -0,0 +1,89 @@ +--- +title: 'एक्सियोस को प्रायोजित करना' +--- + +हमारे प्रोजेक्ट का समर्थन करने के लिए धन्यवाद। आपके दान का उपयोग एक्सियोस के रखरखाव और विकास के लिए किया जाएगा। + +हमारे प्रमुख प्रायोजकों के लाभ के लिए, हम आपको अपना लोगो और संक्षिप्त +जानकारी हमारी वेबसाइट और/या [Readme.md](https://github.com/axios/axios) पर जोड़ने का अवसर प्रदान करते हैं, जो आपके द्वारा चुने गए समर्थन स्तर पर निर्भर करता है। +यदि आप [OpenCollective.com](https://opencollective.com/axios/contribute) के माध्यम से दान करते हैं, तो यह प्रक्रिया पूरी तरह से स्वचालित है, +इसलिए आपका लोगो 24 घंटों के भीतर जोड़ दिया जाएगा। + +आपका लोगो निम्न स्थानों पर रखा जा सकता है: +- मुख्य पृष्ठ पर कैरोसेल में +- दस्तावेज़ के प्रत्येक पृष्ठ पर कैरोसेल में +- हमारी रेपो में [Readme.md](https://github.com/axios/axios) के शीर्ष पर + +कैरोसेल में स्थान इस पर निर्भर करता है: +- प्रायोजक की नवीनता (नए प्रायोजकों को अस्थायी रूप से उच्च स्थान प्राप्त होते हैं) +- चयनित समर्थन स्तर +- दान की कुल राशि +- दान की एकरूपता + +यदि आप [GitHub](https://github.com/sponsors/axios) के माध्यम से दान करते हैं, तो आपको बाद में हमसे संपर्क करना होगा यदि आप चाहते हैं कि आपका लोगो +हमारे समर्थन स्तरों के अनुसार प्रचारित हो। + +## स्तर + +[Open Collective](https://opencollective.com/axios/contribute) पर स्तरों की सूची देखें + +| | कांस्य | रजत | स्वर्ण | प्लेटिनम | +|---------------------------------------------|:-----------:|:------:|:------:|:----------------:| +| मुख्य पृष्ठ | छोटा लोगो | मध्यम लोगो | बड़ा लोगो | अतिरिक्त बड़ा लोगो | +| दस्तावेज़ पृष्ठ | | | मध्यम लोगो | बड़ा लोगो | +| [Readme.md](https://github.com/axios/axios) | | | छोटा लोगो | मध्यम लोगो | +| प्रायोजक के GitHub रेपो से डेटा मर्ज किया जा रहा है | | + | + | + | +| टूलटिप* में लिंक ब्लॉक | | | + | + | +| टूलटिप* में एम्बेड किया गया YouTube वीडियो | | | + | + | +| Readme.md में अधिकतम विवरण लंबाई (अक्षर) | | | 100 | 150 | + +> नोट: +> अतिरिक्त लिंक ब्लॉक और वीडियो केवल `sponsors.json` के माध्यम से सेट किए जा सकते हैं। + +### समर्थक स्तर + +आप एक कस्टम स्तर बना सकते हैं, इस स्थिति में आपको मौजूदा उच्चतम स्तर का लाभ मिलेगा जिसकी कीमत +आपके दान से पूरी हो जाएगी। मौजूदा स्तर से ऊपर की अतिरिक्त दान राशि को कैरोसेल में प्रायोजकों को छांटते समय ध्यान में रखा जाएगा। + +### प्रायोजक लोगो + +आपका लोगो हमारे सर्वर पर डाउनलोड किया जाएगा, अनुकूलित किया जाएगा, खाली बॉर्डर काटे जाएँगे और अनुपात को बनाए रखते हुए उसका आकार बदला जाएगा। +यदि लोगो की चौड़ाई उसकी ऊँचाई से काफ़ी ज़्यादा है, तो टेक्स्ट कैप्शन छिपा दिया जाएगा, +और लोगो उपलब्ध सभी जगह घेर लेगा। सभी स्तरों के लिए लोगो की अधिकतम ऊँचाई समान है। + +### विवरण + +यदि विवरण प्रदान नहीं किया गया है, तो हम इसे प्रायोजक की साइट मेटा टैग से पार्स करने का प्रयास करेंगे। + +### GitHub + +अगर आपने अपनी ओपन कलेक्टिव प्रोफ़ाइल में अपनी GitHub प्रोफ़ाइल सेट अप की है, तो +आप अपने प्रायोजक प्रोफ़ाइल डेटा को प्रबंधित करने के लिए `axios-sponsor` नामक एक विशेष रिपॉजिटरी बना सकते हैं, जिसके रूट में `sponsor.json` होगा। + +इस फ़ाइल का डेटा आपकी ओपन कलेक्टिव प्रोफ़ाइल में मर्ज कर दिया जाएगा, जिससे आप विज्ञापन के लिए कुछ अतिरिक्त जानकारी प्रदान कर सकेंगे। + +`sponsor.json` की संरचना इस प्रकार है (प्रत्येक फ़ील्ड वैकल्पिक है): + +```json +{ +"displayName": "अम्ब्रेला कॉर्पोरेशन", +"targetLink": "https://umbrellacorp.com/", +"alt": "अम्ब्रेला कॉर्पोरेशन", +"image": "https://fake.com/logo.png", +"image_dark": "https://fake.com/logo_dark.png", +"description": "अम्ब्रेला कॉर्पोरेशन एक दवा कंपनी है", +"website": "https://google.com/", +"github": "https://github.com/fakeGitHib", +"icon": "https://fake.com/icon.png", +"video": "https://www.youtube.com/embed/isosE4Bowh0", +"twitter": "https://x.com/profile", +"showCaption": true, +"क्राउन": गलत, +"छिपाएँ": गलत, +"लिंक": { +"लिंक1": "https://google.com/", +"लिंक2": "https://google.com/" +} +} +``` +वेबसाइट पर प्रायोजकों की सूची अपडेट करते समय हमारा बैकएंड हर 24 घंटे में यह डेटा खींचेगा। \ No newline at end of file diff --git a/posts/hi/translating.md b/posts/hi/translating.md new file mode 100644 index 0000000..f0f52d2 --- /dev/null +++ b/posts/hi/translating.md @@ -0,0 +1,47 @@ +--- +title: 'दस्तावेज़ों का अनुवाद करना' +--- + +Axios को ज़्यादा से ज़्यादा लोगों तक पहुँचाने के लिए, यह ज़रूरी है कि ये दस्तावेज़ सभी भाषाओं में पढ़े जा सकें। हम उन सभी लोगों का हमेशा आभार व्यक्त करते हैं जो +दस्तावेज़ के अनुवाद में मदद करना चाहते हैं। यह मार्गदर्शिका इस दस्तावेज़ में अनुवाद जोड़ने के निर्देश प्रदान करती है। + +## संरचना + +प्रत्येक अनुवाद एक कॉन्फ़िगरेशन फ़ाइल, `{language-shortcut}.lang.js` (उदाहरण के लिए, `en.lang.js` या `de.lang.js`) और `posts/{language-shortcut}/*.md` (उदाहरण के लिए `posts/en` या `posts/de`) में अनुवादित दस्तावेज़ फ़ाइलों से बना होता है। `{language-shortcut}` को आपकी भाषा के [ISO 639-1](https://en.wikipedia.org/wiki/ISO_639-1) दो-अक्षर वाले कोड से बदला जाना चाहिए। + +## अपनी भाषा में बनाना + +- `en.lang.js` को कॉपी करें। +- इसका नाम बदलकर `{language-shortcut}.lang.js` कर दें। +- `display` को अपनी भाषा के नाम से बदलें, अपनी भाषा में। उदाहरण के लिए, यदि आप जर्मन का अनुवाद कर रहे हैं, तो "German" के बजाय "Deutsch" लिखें। +- prefix को `/{language-shortcut}/` से बदलें। +- `p` और `t` फ़ील्ड में वैल्यूज का अनुवाद करें। +- साइडबार में `text` लेबल वाले सभी गुणों का अनुवाद करें। **नोट:** इस दस्तावेज़ के नवीनतम संस्करण के बाद से, साइडबार में लिंक को अब अपडेट करने की आवश्यकता नहीं है। + +### नई भाषा को पंजीकृत करना + +अपनी भाषा बनाने और कॉन्फ़िगरेशन फ़ाइल में वाक्यांशों और लिंक का अनुवाद करने के बाद, आपको इसे रूट कॉन्फ़िगरेशन में पंजीकृत करना होगा। ऐसा करने के लिए, `inert.config.js` खोलें और ऊपर की ओर निम्न पंक्ति जोड़ें: + +```js +const {language-shortcut}Config = require('./{language-shortcut}.config.js'); +``` + +बेशक, `{language-shortcut}` को सही [ISO 639-1](https://en.wikipedia.org/wiki/ISO_639-1) कोड (वेरिएबल नाम में भी!) से बदलना याद रखें। + +अब, `langs` स्थिरांक देखें। अगर यह स्थिरांक आपके `require` कथन के ऊपर स्थित है, तो अपने `require` कथन को उसके ऊपर ले जाएँ। `langs` सूची में, निम्न ऑब्जेक्ट जोड़ें: + +```js +const langs = [ +... +{ +name: 'कोई ऐसा नाम जो आपकी भाषा को विशिष्ट रूप से पहचानता हो, उदाहरण के लिए "English" या "German"', +prefix: "कॉन्फ़िगरेशन फ़ाइल में दिया गया prefix", +config: {language-shortcut}Config // वह कॉन्फ़िगरेशन ऑब्जेक्ट जिसे आपने पहले आयात किया था +} +... +]; +``` + +अब, आप फ़ाइलों का अनुवाद शुरू कर सकते हैं। `posts/en` फ़ोल्डर को एक नए फ़ोल्डर `posts/{language-shortcut}` में कॉपी करें और सभी फ़ाइलों का अनुवाद करें (फ़ाइल नामों का अनुवाद न करें, बिल्कुल)। + +यदि आपको कोई समस्या आती है, तो बेझिझक [समस्या बनाएँ](https://github.com/axios/axios-docs/issues/new/choose) करें। \ No newline at end of file diff --git a/posts/hi/urlencoded.md b/posts/hi/urlencoded.md new file mode 100644 index 0000000..30efbc8 --- /dev/null +++ b/posts/hi/urlencoded.md @@ -0,0 +1,119 @@ +--- +title: 'URL-एन्कोडिंग बॉडीज़' +prev_title: 'रद्दीकरण' +prev_link: '/docs/cancellation' +next_title: 'मल्टीपार्ट बॉडीज़' +next_link: '/docs/multipart' +--- + +डिफ़ॉल्ट रूप से, axios JavaScript ऑब्जेक्ट्स को `JSON` में क्रमबद्ध करता है। इसके बजाय, `application/x-www-form-urlencoded` फ़ॉर्मैट में डेटा भेजने के लिए, आप निम्न में से किसी एक तरीके का उपयोग कर सकते हैं। + +### ब्राउज़र + +ब्राउज़र में, आप [`URLSearchParams`](https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams) API का उपयोग इस प्रकार कर सकते हैं: + +```js +const params = new URLSearchParams(); +params.append('param1', 'value1'); +params.append('param2', 'value2'); +axios.post('/foo', params); +``` + +> ध्यान दें कि `URLSearchParams` सभी ब्राउज़रों द्वारा समर्थित नहीं है (देखें [caniuse.com](http://www.caniuse.com/#feat=urlsearchparams)), लेकिन एक [polyfill](https://github.com/WebReflection/url-search-params) उपलब्ध है (ध्यान रखें कि वैश्विक परिवेश को पॉलीफ़िल करें)। + +वैकल्पिक रूप से, आप [`qs`](https://github.com/ljharb/qs) लाइब्रेरी का उपयोग करके डेटा को एनकोड कर सकते हैं: + +```js +const qs = require('qs'); +axios.post('/foo', qs.stringify({ 'bar': 123 })); +``` + +या दूसरे तरीके से (ES6), + +```js +'qs' से qs आयात करें; +const data = { 'bar': 123 }; +const options = { +method: 'POST', +headers: { 'content-type': 'application/x-www-form-urlencoded' }, +data: qs.stringify(data), +url, +}; +axios(options); +``` + +### Node.js + +#### क्वेरी स्ट्रिंग + +node.js में, आप [`querystring`](https://nodejs.org/api/querystring.html) मॉड्यूल का उपयोग इस प्रकार कर सकते हैं: + +```js +const querystring = require('querystring'); +axios.post('http://something.com/', querystring.stringify({ foo: 'bar' })); +``` + +या ['URLSearchParams'](https://nodejs.org/api/url.html#url_class_urlsearchparams) ['url module'](https://nodejs.org/api/url.html) से इस प्रकार: + +```js +const url = require('url'); +const params = new url.URLSearchParams({ foo: 'bar' }); +axios.post('http://something.com/', params.toString()); +``` + +आप [`qs`](https://github.com/ljharb/qs) लाइब्रेरी का भी उपयोग कर सकते हैं। + +> नोट: यदि आपको नेस्टेड ऑब्जेक्ट्स को स्ट्रिंग करना है, तो `qs` लाइब्रेरी बेहतर है, क्योंकि `querystring` विधि में इस उपयोग के मामले में ज्ञात समस्याएँ हैं (https://github.com/nodejs/node-v0.x-archive/issues/1665)। + +### 🆕 स्वचालित क्रमांकन + +यदि `content-type` हेडर `application/x-www-form-urlencoded` पर सेट है, तो Axios डेटा ऑब्जेक्ट को urlencoded फ़ॉर्मेट में स्वचालित रूप से क्रमांकित कर देगा। + +यह ब्राउज़र और `node.js` दोनों में काम करता है: + +```js +const data = { +x: 1, +arr: [1, 2, 3], +arr2: [1, [2], 3], +users: [{name: 'Peter', surname: 'Griffin'}, {name: 'Thomas', surname: 'Anderson'}], +}; + +await axios.post('https://postman-echo.com/post', data, +{headers: {'content-type': 'application/x-www-form-urlencoded'}} +); +``` + +सर्वर इसे इस प्रकार संभालेगा + +```js +{ +x: '1', +'arr[]': [ '1', '2', '3' ], +'arr2[0]': '1', +'arr2[1][0]': '2', +'arr2[2]': '3', +'arr3[]': [ '1', '2', '3' ], +'users[0][name]': 'पीटर', +'users[0][surname]': 'ग्रिफिन', +'users[1][name]': 'थॉमस', +'users[1][surname]': 'एंडरसन' +} +```` + +यदि आपके सर्वर फ्रेमवर्क का अनुरोध बॉडी पार्सर (जैसे `express.js` का `body-parser`) नेस्टेड ऑब्जेक्ट डिकोडिंग का समर्थन करता है, +तो आपको स्वचालित रूप से प्राप्त होगा वही सर्वर ऑब्जेक्ट जो आपने सबमिट किया था। + +इको सर्वर उदाहरण (`express.js`): + +```js +var app = express(); + +app.use(bodyParser.urlencoded({ extended: true })); // url-एन्कोडेड बॉडीज़ का समर्थन करता है + +app.post('/', function (req, res, next) { +res.send(JSON.stringify(req.body)); +}); + +server = app.listen(3000); +``` \ No newline at end of file