एक्सियोस निकाय और हेडर के साथ अनुरोध हटाएं?


118

मैं ReactJS में प्रोग्राम करते समय Axios का उपयोग कर रहा हूं और मैं अपने सर्वर को एक DELETE अनुरोध भेजने का दिखावा करता हूं।

ऐसा करने के लिए मुझे हेडर चाहिए:

headers: {
  'Authorization': ...
}

और शरीर से बना है

var payload = {
    "username": ..
}

मैं अंतर जाले में खोज कर रहा हूं और केवल यह पाया कि DELETE पद्धति को "परम" की आवश्यकता है और कोई "डेटा" स्वीकार नहीं करता है।

मैं इसे इस तरह भेजने की कोशिश कर रहा हूं:

axios.delete(URL, payload, header);

या और भी

axios.delete(URL, {params: payload}, header);

लेकिन कुछ भी काम नहीं लगता ...

क्या कोई मुझे बता सकता है कि क्या यह संभव है (मुझे लगता है कि यह है) दोनों हेडर और शरीर के साथ एक DELETE अनुरोध भेजने के लिए और ऐसा कैसे करें?

आपका अग्रिम में ही बहुत धन्यवाद!

जवाबों:


144

इसलिए कई कोशिशों के बाद, मैंने इसे काम करते पाया।

कृपया क्रम क्रम का पालन करें यह बहुत महत्वपूर्ण है अन्यथा यह काम नहीं करेगा

axios.delete(URL, {
  headers: {
    Authorization: authorizationToken
  },
  data: {
    source: source
  }
});

2
नमस्कार, क्या आप बता सकते हैं कि आपका उत्तर क्यों काम करता है?
फ्रेंको गिल

102

axiox.deleteएक अनुरोध निकाय का समर्थन करता है। यह दो मापदंडों को स्वीकार करता है: यूआरएल और वैकल्पिक विन्यास। आप config.dataअनुरोध बॉडी और हेडर को निम्नानुसार सेट करने के लिए उपयोग कर सकते हैं :

axios.delete(url, { data: { foo: "bar" }, headers: { "Authorization": "***" } });

यहां देखें - https://github.com/axios/axios/issues/897


बात यह है कि मैं एक शरीर और हेडर को एक ही डिलीट रिक्वेस्ट में भेजना चाहता हूं
Asfourh सैकड़ों

83

यहाँ axios के साथ विभिन्न HTTP क्रियाओं को भेजने के लिए आवश्यक स्वरूपों का एक संक्षिप्त सारांश दिया गया है:

  • GET: दो तरीके

    • पहली विधि

      axios.get('/user?ID=12345')
        .then(function (response) {
          // Do something
        })
      
    • दूसरी विधि

      axios.get('/user', {
          params: {
            ID: 12345
          }
        })
        .then(function (response) {
          // Do something
        })
      

    ऊपर के दो बराबर हैं। paramsदूसरी विधि में कीवर्ड का निरीक्षण करें ।

  • POST तथा PATCH

    axios.post('any-url', payload).then(
      // payload is the body of the request
      // Do something
    )
    
    axios.patch('any-url', payload).then(
      // payload is the body of the request
      // Do something
    )
    
  • DELETE

    axios.delete('url', { data: payload }).then(
      // Observe the data keyword this time. Very important
      // payload is the request body
      // Do something
    )
    

चाबी छीन लेना

  • getअनुरोधों को वैकल्पिक रूप paramsसे क्वेरी पैरामीटर को ठीक से सेट करने के लिए एक कुंजी की आवश्यकता होती है
  • deleteएक निकाय के अनुरोधों को एक dataकुंजी के तहत सेट करने की आवश्यकता होती है

11
आपका जवाब मुझे कामना करता है कि स्टैक ओवरफ्लो पर एक +2 upvote सुविधा थी।
एली-बीडी

यह एकमात्र उत्तर है जो इसे विवरण में बताता है। धन्यवाद यह वास्तव में भी दूसरों को समझने में मदद की।
ज्योफ

शरीर के साथ नहीं, डिलीट रिक्वेस्ट कैसे भेजें?
अजय सिंह

इस सवाल का सबसे अच्छा जवाब। धन्यवाद।
हार्टलेसन

1
@MaFiA, यदि आप पैरामेट्स के साथ डिलीट अनुरोध भेजना चाहते हैं। आप इसे केवल
17

14

Axios। हटाना है एक यूआरएल और एक वैकल्पिक विन्यास से पारित कर दिया

axios.delete (url [, config])

कॉन्फ़िगरेशन के लिए उपलब्ध फ़ील्ड हेडर शामिल कर सकते हैं

यह बनाता है ताकि एपीआई कॉल के रूप में लिखा जा सकता है:

const headers = {
  'Authorization': 'Bearer paperboy'
}
const data = {
  foo: 'bar'
}

axios.delete('https://foo.svc/resource', {headers, data})

यह मेरे लिए काम नहीं करता है ... मेरे पास है const headers = {'Authorization': ...}और data = {'username': ...}खत्म हो रहा है, axios.delete('http://...', {headers, data})लेकिन सर्वर हेडर तक नहीं पहुंच सकता है ...
Asfourh सैकड़ों

ब्राउज़र से बाहर जाने का अनुरोध अलग कहता है। यह Stackblitz ( stackblitz.com/edit/react-gq1maa ) देखें और ब्राउज़र नेटवर्क टैब ( snag.gy/JrAMjD.jpg ) में भी अनुरोध करें । आपको यहां यह सुनिश्चित करने की आवश्यकता है कि आप हेडर सर्वर साइड को सही तरीके से पढ़ रहे हैं या यह अनुरोध अस्वीकार नहीं किया गया है और इसके साथ छेड़छाड़ की गई है।
ओलुवाफेमी सुले

6

मेरे पास एक ही मुद्दा था जो मैंने इसे इस तरह हल किया:

axios.delete(url, {data:{username:"user", password:"pass"}, headers:{Authorization: "token"}})

5

दरअसल, axios.deleteएक अनुरोध निकाय का समर्थन करता है।
यह दो मापदंडों को स्वीकार करता है: एक URLऔर एक वैकल्पिक config। अर्थात्...

axios.delete(url: string, config?: AxiosRequestConfig | undefined)

आप हटाने के अनुरोध के लिए प्रतिक्रिया निकाय सेट करने के लिए निम्न कार्य कर सकते हैं:

let config = { 
    headers: {
        Authorization: authToken
    },
    data: { //! Take note of the `data` keyword. This is the request body.
        key: value,
        ... //! more `key: value` pairs as desired.
    } 
}

axios.delete(url, config)

मुझे उम्मीद है इससे किसी को सहायता मिलेगी!


1
This.httpService.delete (apiUrl, {deleteBody हेडर:: headersRequest, डेटा}) धन्यवाद, मैं के रूप में मेरे nestJs HttpService हटाने विधि में इस का उपयोग कर रहा
शांति


2

axiosमैंने यह किया है के माध्यम से कुछ हेडर के साथ एक HTTP DELETE भेजने के लिए :

  const deleteUrl = "http//foo.bar.baz";
  const httpReqHeaders = {
    'Authorization': token,
    'Content-Type': 'application/json'
  };
  // check the structure here: https://github.com/axios/axios#request-config
  const axiosConfigObject = {headers: httpReqHeaders}; 

  axios.delete(deleteUrl, axiosConfigObject);

axiosअलग HTTP verbs (जीईटी, पोस्ट, PUT, DELETE) के लिए वाक्य रचना मुश्किल है, क्योंकि कभी कभी 2 पैरामीटर HTTP शरीर, कुछ अन्य समय (जब यह आवश्यक नहीं किया जा सकता है) तुम सिर्फ 2 पैरामीटर के रूप में हेडर से पारित माना जाता है ।

हालाँकि मान लें कि आपको HTTP शरीर के बिना HTTP POST अनुरोध भेजने की आवश्यकता है, तो आपको undefined2 पैरामीटर के रूप में पास करने की आवश्यकता है ।

यह ध्यान में रखें कि कॉन्फ़िगरेशन ऑब्जेक्ट ( https://github.com/axios/axios#request-config ) की परिभाषा के अनुसार आप अभी भी HTTP कॉल में HTTP कॉल को dataफ़ील्ड के माध्यम से पास कर सकते हैं axios.delete, हालांकि HTTP के लिए DELETE क्रिया को अनदेखा किया जाएगा।

2 डी पैरामीटर के बीच यह भ्रम कभी-कभी एचटीटीपी बॉडी और कुछ अन्य समय के लिए पूरी configवस्तुस्थिति के axiosकारण होता है कि कैसे एचटीटीपी के नियम लागू किए गए हैं। कभी-कभी HTTP कॉल को वैध मानने के लिए HTTP बॉडी की आवश्यकता नहीं होती है।


0

मुझे उसी समस्या का सामना करना पड़ा ... मैंने एक कस्टम अक्षीयता उदाहरण बनाकर इसे हल किया। और उस का उपयोग कर एक प्रामाणिक हटाने का अनुरोध करने के लिए ..

const token = localStorage.getItem('token');
const request = axios.create({
        headers: {
            Authorization: token
        }
    });

await request.delete('<your route>, { data: { <your data> }});

0

मुझे काम करने का एक तरीका मिला:

axios
      .delete(URL, {
        params: { id: 'IDDataBase'},
        headers: {
          token: 'TOKEN',
        },
      }) 
      .then(function (response) {
        
      })
      .catch(function (error) {
        console.log(error);
      });

मुझे उम्मीद है कि यह काम आपके लिए भी होगा।


0

मैंने उपरोक्त सभी की कोशिश की, जो मेरे लिए काम नहीं किया। मैंने बस PUT (प्रेरणा यहाँ मिली ) के साथ जाना समाप्त कर दिया और इस url कॉल को हटाने के लिए अपने सर्वर साइड लॉजिक को बदल दिया। (django बाकी ढांचा फ़ंक्शन ओवरराइड)।

जैसे

.put(`http://127.0.0.1:8006/api/updatetoken/20`, bayst)
      .then((response) => response.data)
      .catch((error) => { throw error.response.data; });
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.