Quando o projeto precisa usar solicitações de rede, há muitas maneiras de escolher ajax nativo (com base em XMLHttpRequest), jQuery-Ajax, vue-resource (obsoleto) e, a seguir, até os axios atuais.
As vantagens dos axios são:
-
Envie uma solicitação XMLHttpRequest no navegador.
-
Envie a solicitação http em node.js.
-
Promessa de suporte.
-
Pode interceptar solicitações e respostas.
-
Solicitação e resposta de conversão.
Método de solicitação Axios:
-
axios (config)
-
axios.request (config)
-
axios.get (url, config)
-
axios.delete (url, config)
-
axios.head (url, config)
-
axios.post (url, dados, configuração)
-
axios.put (url, dados, configuração)
-
axios.patch (url, dados, configuração)
Axios envia solicitações simultâneas, você pode usar .all () para mesclar solicitações simultâneas
axios.all([ axios( 第一次网络请求 )
,axios( 第二次网络请求 )]
)
.then(results=>{
//结果处理语句
})
Os resultados retornados são uma matriz, que é uma matriz combinada dos resultados das n solicitações anteriores.
Você pode usar .spread () para dividir os resultados:
axios.all([axios( //第一次网络请求 ),axios( //第二次网络请求 )])
.then(axios.spread( (res1,res2) => {
console.log(res1);
console.log(res2)
})
)
Configuração global de axios:
axios.defaults.baseURL = "http://127.1.1.1"
axios.defaults.timeout = 1000
Opções de configuração comuns:
-
Endereço de solicitação: url: '/ usuário'
-
Tipo de solicitação: método: 'get'
-
Solicitar caminho raiz: baseURL: ' http://127.1.1.1 '
-
Processamento de dados antes da solicitação: transformRequest: [function (data) {}]
-
Processamento de dados após solicitação: transformResponse: [função (dados) {}]
-
Cabeçalho de solicitação personalizada: cabeçalhos: {'X-Requested-With': 'XMLHttpRequest'}
-
objeto de consulta de url: params: {id: 12}
-
Função de serialização do objeto de consulta: paramsSerializer: function (params) {}
-
corpo da solicitação : dados: {chave: 'xx'}
-
Configuração de tempo limite ms: tempo limite: 1000
-
Se deve trazer tokens entre domínios: withCredentials: false
-
Solicitação de processamento personalizado: adaptador: função (resolver, rejeitar, config) {}
-
Informações de verificação de identidade: auth: {uname: 'xiaoming', pwd: '12 '}
-
Formato de dados de resposta: json / blob / document / arraybuffer / text / steam responseType: 'json'
instância axios
Crie várias instâncias para axios. Na instância, você pode criar algumas informações de configuração padrão para esta instância. Quando uma determinada instância é usada, a configuração dessa instância será acionada.
Crie uma instância:
const instance = axios.create({ baseURL:'http://127.1.1.1', timeout:1000 })
Caso de uso:
instance({ url:'/user' })
Pacote Axios formulário um:
import axios from 'axios'
export function request( config, success, fail ){
const instance = axios.create({ baseURL:'http://127.1.1.1', timeout: 1000 })
instance(config)
.then( res=>{
success(res)
})
.catch( err=>{
fail(err)
})
}
No componente:
import { request } from './request.js'
request( { url:'/user' },
res => { console.log(res) },
err=>{console.log(err) }
)
Pacote Axios de dois:
export function request(config){
return new Promise(resolve, reject)=>{
const instance = axios.create({
baseURL: 'http://127.1.1.1',
timeout: 1000
})
instance(config).then(res=>{ resolve(res) })
.catch(err=>{ reject(err) })
})
}
No componente:
request({ url:'/home' }).then(res=>{ console.log(res) })
.catch(err=>{ console.log(err) })
Pacote Axios de três formas:
Como a própria instância axios é uma axiosPromise, você pode retornar diretamente essa instância sem usar outra Promise para encapsulá-la.
export function request(config){
const instance = axios.create({
baseURL: 'http://127.1.1.1',
timeout: 1000
})
return instance(config)
}
No componente:
request({ url:'/home' }).then(res=>{ console.log(res) })
.catch(err=>{ console.log(err) })