axios

一、跨域问题

跨域:不同协议,不同域名或不同端口号都叫做跨域。

解决方法:配置代理 comfig --> index.js

proxyTable: {

  'api' : {

   target: 请求后台的地址接口,如 'http://localhost:3000',

   changeOrigin: true,

   pathRewrite: {

      '^/api': 'http://localhost:3000'

    } 

  }

}

 

二、axios: 基于promise用于浏览器和node.js的http客户端。

axios支持浏览器和node.js、支持promise, 能拦截请求和响应、能转换请求和响应数据、 能取消请求、 自动转换JSON数据、 浏览器端支持防止CSRF(跨站请求伪造)。

全局配置: 

axios.defaults.timeout = 3000; 超时时间

axios.defaults.baseURL='http://localhost:3000'; 默认地址

axios.defaults.headers['mytoken']='..'; 请求头

- 请求方法:

axios({
method: 'post',
url: '/user/12345',
data: {
firstName: 'Fred',
lastName: 'Flintstone'
}
}).then(res => {});

axios({
  method: 'get',
url: '/user/12345',
params: {
firstName: 'Fred',
lastName: 'Flintstone'
}
})
.then(res => {});

axios API:
axios.get(url[, config])
axios.delete(url[, config])
axios.post(url[, data[, config]])
axios.put(url[, data[, config]])

执行多个并发请求:

axios.all()

 

- 以application / x-www-form-urlencoded格式发送数据:

1. 浏览器: 

const params = new URLSearchParams();
params.append('param1', 'value1');
params.append('param2', 'value2');
axios.post('/foo', params);

2. qs库编码数据: 

const qs = require('qs');
axios.post('/foo', qs.stringify({ 'bar': 123 }));

或:

import qs from 'qs';
const data = { 'bar': 123 };
const options = {
method: 'POST',
headers: { 'content-type': 'application/x-www-form-urlencoded' },
data: qs.stringify(data),
url,
};
axios(options);

或:

const querystring = require('querystring');
axios.post('http://something.com/', querystring.stringify({ foo: 'bar' }));

 

三、axios拦截器

1. 请求拦截器:

axios.interceptors.request.use((config) => {

  if(!res.data.isok){

    alert(res.data.info)
  }
  return res

}, (err) => {

  return Promise.reject(err);

})

2. 响应拦截器:

axios.interceptors.response.use((res) => {

  config.token = '';
  return res

}, (err) => {

  return Promise.reject(err);
})

 

四、token

在计算机身份认证中是令牌(临时)的意思,在词法分析中是标记的意思。一般作为邀请、登录系统使用。

1、Token是在客户端频繁向服务端请求数据,服务端频繁的去数据库查询用户名和密码并进行对比,判断用户名和密码正确与否,并作出相应提示。

2、Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。

3、Token的目的是为了减轻服务器的压力,减少频繁的查询数据库。

 

五、响应结构

{
// `data` 由服务器提供的响应
data: {},

// `status` 来自服务器响应的 HTTP 状态码
status: 200,

// `statusText` 来自服务器响应的 HTTP 状态信息
statusText: 'OK',

// `headers` 服务器响应的头
headers: {},

// `config` 是为请求提供的配置信息
config: {},
// 'request'
// `request` is the request that generated this response
// It is the last ClientRequest instance in node.js (in redirects)
// and an XMLHttpRequest instance the browser
request: {}
}
 
上一篇:计算几何:凸包


下一篇:Node简介