অক্ষগুলি শরীর এবং শিরোলেখগুলির সাথে অনুরোধ মুছবে?


104

রিঅ্যাক্টজেএসে প্রোগ্রাম করার সময় আমি অ্যাকজিওস ব্যবহার করছি এবং আমি আমার সার্ভারে একটি মোছার অনুরোধ প্রেরণের ভান করছি।

এটি করতে আমার শিরোনামগুলি দরকার:

headers: {
  'Authorization': ...
}

এবং শরীর গঠিত হয়

var payload = {
    "username": ..
}

আমি আন্তঃ ওয়েবগুলিতে অনুসন্ধান করেছিলাম এবং কেবলমাত্র আবিষ্কার করেছি যে মোছার পদ্ধতিটির জন্য "পরম" প্রয়োজন এবং কোনও "ডেটা" গ্রহণ করে না।

আমি এটি পাঠানোর চেষ্টা করছিলাম:

axios.delete(URL, payload, header);

অথবা এমনকি

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

কিছুই মনে হচ্ছে না ...

কেউ কি আমাকে বলতে পারবেন যে এটি সম্ভব (যদি আমি এটি অনুমান করি) তবে উভয় শিরোলেখ এবং শরীরে একটি মুছে ফেলার অনুরোধ প্রেরণ করা যায় এবং কীভাবে এটি করা যায়?

তুমাকে অগ্রিম ধন্যবাদ!

উত্তর:


126

তাই বেশ কয়েকটি চেষ্টা করার পরেও আমি এটি কাজ করে দেখতে পেলাম।

ক্রম ক্রমটি অনুসরণ করুন এটি খুব গুরুত্বপূর্ণ অন্যথায় এটি কাজ করবে না

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

97

axiox.deleteএকটি অনুরোধ বডি সমর্থন করে। এটি দুটি পরামিতি গ্রহণ করে: ইউআরএল এবং alচ্ছিক কনফিগারেশন। আপনি config.dataঅনুরোধ বডি এবং শিরোনাম নীচে হিসাবে সেট করতে ব্যবহার করতে পারেন :

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

এখানে দেখুন - https://github.com/axios/axios/issues/897


জিনিসটি হ'ল আমি একই মুছে ফেলার অনুরোধে একটি বডি এবং শিরোনাম প্রেরণ করতে চাই
আসফোরহান্ড্রেড

75

অক্ষের সাথে বিভিন্ন 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
    )
    

কী Takeaways

  • getparamsসঠিকভাবে ক্যোয়ারী প্যারামিটার সেট করতে অনুরোধগুলির একটি কী প্রয়োজন
  • deleteএকটি বডি সহ অনুরোধগুলির এটি একটি dataকী এর অধীনে সেট করা দরকার

11
আপনার উত্তরটি আমাকে ইচ্ছুক করে তোলে যে স্ট্যাক ওভারফ্লোতে একটি +2 আপভোট বৈশিষ্ট্য ছিল।
eli-bd

এটি বিশদে এটির একমাত্র উত্তর। ধন্যবাদ এটি অন্যকে বুঝতে সত্যই সহায়তা করেছে।
জিওফ

বডি নয়, কীভাবে প্যারাম দিয়ে মুছে ফেলার অনুরোধ পাঠাতে হবে?
এমএফআইএ

এই প্রশ্নের সেরা উত্তর। ধন্যবাদ.
হার্টলেসান

4
@ এমএফআইএ, আপনি যদি প্যারামগুলির সাথে মুছে ফেলার অনুরোধটি প্রেরণ করতে চান। আপনি সহজেই ক্যোয়ারী স্ট্রিংগুলি ব্যবহার করে url এ রাখতে পারেন
ভ্যান_পেইটিন

13

অক্ষরেখা ডিলিট হয় একটি url এবং একটি ঐচ্ছিক কনফিগারেশন পাস

axios.delete (url [, config])

কনফিগারেশনে উপলব্ধ ক্ষেত্রগুলির মধ্যে শিরোনাম অন্তর্ভুক্ত থাকতে পারে

এটি এটিকে করে যাতে API কলটি এইভাবে লেখা যায়:

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})তবে সার্ভার শিরোনামগুলি অ্যাক্সেস করতে পারে না ...
আসফোরহান্ড্রেড

ব্রাউজার থেকে বেরিয়ে আসা অনুরোধটি ভিন্ন বলে। এই স্ট্যাকব্লিটজ ( 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এবং alচ্ছিক 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)

আমি আশা করি এটা কারো সাহায্যে লাগবে!


4
ধন্যবাদ, আমি এটিকে আমার নেস্টজেজে এইচটিটিপি সার্ভিসেস মুছে ফেলার পদ্ধতিটিতে ব্যবহার করছি: এই এইচটিটিপিএসসিএস.ডিলেট (এপিআইআরএল, {শিরোনাম: শিরোনাম অনুসন্ধান, ডেটা: ডিলিটবডি})
শান্তি


2

axiosআমি এই কাজটি দিয়ে কিছু হেডার সহ একটি HTTP মোছার পাঠাতে :

  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- র ক্রিয়া (পান, পোষ্ট, put, মুছুন) জন্য সিনট্যাক্স চতুর কারণ কখনও কখনও 2nd প্যারামিটার HTTP- র শরীর, কিছু অন্যান্য বার (যখন এটি প্রয়োজন না হতে পারে) আপনি শুধু 2nd প্যারামিটার হিসাবে হেডার পাস হতে অনুমিত হয় ।

তবে আসুন আমরা এইচটিটিপি বডি ছাড়াই আপনাকে একটি HTTP পোস্ট অনুরোধ প্রেরণ করতে হবে, তারপরে আপনাকে পাস করতে হবে undefined ২ য় পরামিতি হিসাবে ।

মনে রাখবেন যে কনফিগারেশন অবজেক্টের সংজ্ঞা অনুসারে ( https://github.com/axios/axios#request-config ) আপনি কল করার সময় dataক্ষেত্রের মাধ্যমে এইচটিটিপি কলটিতে একটি HTTP বডিটি পাস করতে পারেনaxios.delete , তবে এইচটিটিপি-র জন্য ক্রিয়া মুছে ফেলুন এটি উপেক্ষা করা হবে।

২ য় প্যারামিটারের মধ্যে এই বিভ্রান্তিটি কখনও কখনও এইচটিটিপি বডি এবং অন্য কোনও সময়ের জন্য পুরো configঅবজেক্টের axiosমধ্যে এইচটিটিপি বিধি কার্যকর করা হয়। কখনও কখনও এইচটিটিপি কলকে বৈধ হিসাবে বিবেচনা করার জন্য কোনও এইচটিটিপি বডি প্রয়োজন হয় না।


0

আমি একই সমস্যার মুখোমুখি হয়েছি ... আমি একটি কাস্টম অ্যাক্সেস উদাহরণ তৈরি করে এটি সমাধান করেছি। এবং এটি একটি প্রমাণীকরণ মোছার অনুরোধ করতে ব্যবহার করুন ..

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

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

0

আমি উপরের সমস্তগুলি চেষ্টা করেছিলাম যা আমার পক্ষে কার্যকর হয়নি। আমি স্রেফ পিটিউই দিয়ে যাচ্ছি ( এখানে অনুপ্রেরণা পাওয়া গেছে) ) এবং এই ইউআরএল কলটিতে একটি মুছে ফেলতে আমার সার্ভার সাইড লজিকটি পরিবর্তন করেছি। (জাজানো রেস্ট ফ্রেমওয়ার্ক ফাংশন ওভাররাইড)।

যেমন

.put(`http://127.0.0.1:8006/api/updatetoken/20`, bayst)
      .then((response) => response.data)
      .catch((error) => { throw error.response.data; });

-1

আমি একটি উপায় খুঁজে পেয়েছি যা কাজ করে:

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

আমি আশা করি আপনার জন্য এই কাজ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.