Bagaimana cara mengatur header dan opsi dalam aksioma?


160

Saya menggunakan Axios untuk melakukan posting HTTP seperti ini:

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

Apakah ini benar? Atau yang harus saya lakukan:

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

3
Saya bertanya-tanya mengapa Anda menerima jawaban yang salah!
Sirwan Afifi

@SirwanAfifi Tidak ada jawaban yang diterima untuk pertanyaan ini
Tessaracter

2
@Tessaracter Pada 13 Mei 2019, ada jawaban yang diterima dengan skor -78. Sudah diurus sejak saat itu.
jkmartindale

@jkmartindale Interesting
Tessaracter

Jawaban:


265

Ada beberapa cara untuk melakukan ini:

  • Untuk satu permintaan:

    let config = {
      headers: {
        header1: value,
      }
    }
    
    let data = {
      'HTTP_CONTENT_LANGUAGE': self.language
    }
    
    axios.post(URL, data, config).then(...)
    
  • Untuk mengatur konfigurasi global default:

    axios.defaults.headers.post['header1'] = 'value' // for POST requests
    axios.defaults.headers.common['header1'] = 'value' // for all requests
    
  • Untuk pengaturan sebagai default pada instance aksioma:

    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;
    });
    

1
bolehkah saya meminta Anda untuk melihat axiospertanyaan terkait di sini: stackoverflow.com/questions/59470085/… ?
Istiaque Ahmed

141

Anda dapat mengirim permintaan get dengan Header (untuk otentikasi dengan jwt misalnya):

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

Anda juga dapat mengirim permintaan posting.

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

Cara saya melakukannya, adalah dengan menetapkan permintaan seperti ini:

 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
Permintaan posting kedua Anda tidak memberikan tajuk khusus, dapatkah Anda mengeditnya sebagai contoh lengkap?
Bergaris

dengan menggunakan datadi interceptors.request => itu akan menimpa bagian tubuh Anda yang sebenarnya dari panggilan tertentu yang kami gunakan. Jadi tidak digunakan dalam kasus seperti itu.
Anupam Maurya

Apakah Anda harus mengikuti standar 'Otorisasi:' Pembawa '+ token' atau dapatkah Anda melakukan sesuatu seperti Auth: token misalnya? Saya tidak menggunakan api auth0 tetapi melakukan sendiri di simpul, maaf jika pertanyaan bodoh baru untuk jwt dan hal-hal keamanan secara umum
Wiliam Cardoso

24

Anda bisa meneruskan objek konfigurasi ke aksioma seperti:

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

16

Ini adalah contoh sederhana konfigurasi dengan header dan responseType:

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 dapat berupa 'application / x-www-form-urlencoded' atau 'application / json' dan dapat berfungsi juga 'application / json; charset = utf-8'

Jenis tanggapan dapat berupa 'arraybuffer', 'blob', 'document', 'json', 'text', 'stream'

Dalam contoh ini, this.data adalah data yang ingin Anda kirim. Itu bisa berupa nilai atau array. (Jika Anda ingin mengirim objek, Anda mungkin harus membuat cerita bersambung)


Bisakah Anda menjelaskan perbedaan antara mengatur tajuk dengan kami tanpa kata kunci konfigurasi?
kabel gelembung

1
Menggunakan variabel config menghasilkan kode yang lebih bagus dan lebih mudah dibaca; tidak ada yang lain @ bubble-cord
gtamborero

14

Inilah cara yang Benar: -

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


10

Anda dapat menginisialisasi tajuk default 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

jika Anda ingin melakukan permintaan dapatkan dengan params dan header.

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

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

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


2

coba kode ini

dalam contoh kode gunakan axios get rest API.

di pasang

  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);
  });
}

Harapan adalah bantuan.


2

Saya telah menghadapi masalah ini dalam permintaan pos . Saya telah berubah seperti ini di header aksioma. Ini bekerja dengan baik.

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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.