Axios'ta başlık ve seçenekler nasıl ayarlanır?


200

Axios'u böyle bir HTTP gönderisi gerçekleştirmek için kullanıyorum:

import axios from 'axios'
params = {'HTTP_CONTENT_LANGUAGE': self.language}
headers = {'header1': value}
axios.post(url, params, headers)

Bu doğru mu? Yoksa yapmalı mıyım:

axios.post(url, params: params, headers: headers)

3
Neden yanlış bir cevabı kabul ettiğini merak ediyorum!
Sirwan Afifi

@SirwanAfifi Bu soru için kabul edilmiş bir cevap yok
Dheeraj M Pai

4
@Tessaracter 13 Mayıs 2019'da -78 puanla kabul edilen bir cevap vardı. O zamandan beri halledildi.
jkmartindale

@jkmartindale İlginç
Dheeraj M Pai

Yanıtlar:


308

Bunu yapmanın birkaç yolu vardır:

  • Tek bir istek için:

    let config = {
      headers: {
        header1: value,
      }
    }
    
    let data = {
      'HTTP_CONTENT_LANGUAGE': self.language
    }
    
    axios.post(URL, data, config).then(...)
    
  • Varsayılan genel yapılandırmayı ayarlamak için:

    axios.defaults.headers.post['header1'] = 'value' // for POST requests
    axios.defaults.headers.common['header1'] = 'value' // for all requests
    
  • Axios örneğinde varsayılan olarak ayarlamak için:

    let instance = axios.create({
      headers: {
        post: {        // can be common or any other method
          header1: 'value1'
        }
      }
    })
    
    //- or after instance has been created
    instance.defaults.headers.post['header1'] = 'value'
    
    //- or before a request is made
    // using Interceptors
    instance.interceptors.request.use(config => {
      config.headers.post['header1'] = 'value';
      return config;
    });
    

159

Başlıklar ile bir alma isteği gönderebilirsiniz (örneğin jwt ile kimlik doğrulama için):

axios.get('https://example.com/getSomething', {
 headers: {
   Authorization: 'Bearer ' + token //the token is a variable which holds the token
 }
})

Ayrıca bir gönderi talebi gönderebilirsiniz.

axios.post('https://example.com/postSomething', {
 email: varEmail, //varEmail is a variable which holds the email
 password: varPassword
},
{
  headers: {
    Authorization: 'Bearer ' + varToken
  }
})

Benim bunu yapma şeklim şuna benzer bir istek oluşturmak:

 axios({
  method: 'post', //you can set what request you want to be
  url: 'https://example.com/request',
  data: {id: varID},
  headers: {
    Authorization: 'Bearer ' + varToken
  }
})

1
İkinci gönderi isteğiniz belirli başlıklar sağlamaz, tam örnek için düzenleyebilir misiniz?
Striped

datainterceptors.request => kullanarak , kullandığımız belirli çağrıdaki gerçek vücut parçanızı geçersiz kılacaktır. Yani böyle bir durumda kullanılmaz.
Anupam Maurya

Bu 'Yetkilendirme:' Taşıyıcı '+ token' standardına uymanız gerekiyor mu yoksa örneğin Auth: token gibi bir şey yapabilir misiniz? Auth0 api kullanmıyorum ama düğümde kendim yapıyorum, aptalca soru jwt ve genel olarak güvenlik konularında yeni ise özür dilerim
Wiliam Cardoso

28

Bir yapılandırma nesnesini aksiyolara aşağıdaki gibi iletebilirsiniz:

axios({
  method: 'post',
  url: '....',
  params: {'HTTP_CONTENT_LANGUAGE': self.language},
  headers: {'header1': value}
})

19

İşte Doğru yol: -

axios.post('url', {"body":data}, {
    headers: {
    'Content-Type': 'application/json'
    }
  }
)


18

Bu, üstbilgiler ve responseType içeren basit bir konfigürasyon örneğidir:

var config = {
  headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
  responseType: 'blob'
};

axios.post('http://YOUR_URL', this.data, config)
  .then((response) => {
  console.log(response.data);
});

Content-Type, 'application / x-www-form-urlencoded' veya 'application / json' olabilir ve ayrıca 'application / json; charset = utf-8' olarak da çalışabilir

responseType 'arraybuffer', 'blob', 'document', 'json', 'text', 'stream' olabilir

Bu örnekte this.data, göndermek istediğiniz veridir. Bir değer veya Dizi olabilir. (Bir nesneyi göndermek istiyorsanız, muhtemelen onu seri hale getirmeniz gerekecektir)


Başlıkları bizim config anahtar kelimemiz olmadan ayarlamak arasındaki farkı açıklayabilir misiniz?
kabarcık kordonu

1
Bir yapılandırma değişkeni kullanmak, daha güzel ve daha okunabilir bir kod üretir; @ bubble-cord
gtamborero


10

Varsayılan bir başlığı başlatabilirsiniz axios.defaults.headers

 axios.defaults.headers = {
        'Content-Type': 'application/json',
        Authorization: 'myspecialpassword'
    }

   axios.post('https://myapi.com', { data: "hello world" })
        .then(response => {
            console.log('Response', response.data)
        })
        .catch(e => {
            console.log('Error: ', e.response.data)
        })

9

parametreler ve başlıklarla bir alma isteği yapmak istiyorsanız.

var params = {
  paramName1: paramValue1,
  paramName2: paramValue2
}

var headers = {
  headerName1: headerValue1,
  headerName2: headerValue2
}

 Axios.get(url, {params, headers} ).then(res =>{
  console.log(res.data.representation);
});


4

bu kodu dene

örnek kodda axios get rest API'sini kullanın.

monte edilmiş

  mounted(){
    var config = {
    headers: { 
      'x-rapidapi-host': 'covid-19-coronavirus-statistics.p.rapidapi.com',
      'x-rapidapi-key': '5156f83861mshd5c5731412d4c5fp18132ejsn8ae65e661a54' 
      }
   };
   axios.get('https://covid-19-coronavirus-statistics.p.rapidapi.com/v1/stats? 
    country=Thailand',  config)
    .then((response) => {
    console.log(response.data);
  });
}

Umut yardımdır.


4

Gönderi talebinde bu sorunla karşılaştım . Axios başlığında böyle değiştim. İyi çalışıyor.

axios.post('http://localhost/M-Experience/resources/GETrends.php',
      {
        firstName: this.name
      },
      {
        headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
      });

-2

@ user2950593 Axios isteğiniz doğru. Özel başlıklarınıza sunucu tarafında izin vermeniz gerekir. API'niz php'de varsa, bu kod sizin için çalışacaktır.

header("Access-Control-Allow-Origin: *");   
header("Access-Control-Allow-Methods: GET, POST, OPTIONS, HEAD");
header("Access-Control-Allow-Headers: Content-Type, header1");

Sunucu tarafında özel başlıklarınıza izin verdiğinizde, axios istekleriniz düzgün çalışmaya başlayacaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.