react & vue & angularVue全家桶接口

Vue接口调用方式(二)axios用法

2022-04-05  本文已影响0人  生命里那束光

axios用法

目录总览:

1. axios的基本特性

axios 是一个基于Promise用于浏览器和node.js的HTTP客户端。

它具有以下特征:

2. axios的基本用法

//客户端请求
axios.get('http://localhost:3000/adata')
        .then(ret =>{
            //data属性名称是固定的,用于获取后台响应的数据
            console.log(ret.data)
        })
//服务器端响应
app.get('/adata', (req, res) => {
  res.send('Hello axios!')
})

3. axios的常用API

4. axios的参数传递🔥

4.1 get传递参数
第一种方式
//客户端请求
<body>
  <script type="text/javascript" src="js/axios.js"></script>
  <script type="text/javascript">
    //axios getrestful形式的url请求传参
    axios.get('http://localhost:3000/axios/456').then(function(ret){
      console.log(ret.data)
    })
  </script>
</body>
//服务器响应
app.get('/axios/:id', (req, res) => {
  res.send('axios get (Restful) 传递参数' + req.params.id)
})
第二种方式
//客户端请求
<body>
  <script type="text/javascript" src="js/axios.js"></script>
  <script type="text/javascript">
    //axios get通过params选项传递参数
    axios.get('http://localhost:3000/axios', {
      params: {
        id: 789
      }
    }).then(function (ret) {
      console.log(ret.data)
    })
  </script>
</body>
//服务器响应
app.get('/axios', (req, res) => {
  res.send('axios get 传递参数' + req.query.id)
})
4.2 delete传递参数

参数传递方式和get相似(两种)

//客户端请求
<body>
  <script type="text/javascript" src="js/axios.js"></script>
  <script type="text/javascript">
    //axios delete通过params选项传递参数
    axios.delete('http://localhost:3000/axios', {
      params: {
        id: 111
      }
    }).then(function (ret) {
      console.log(ret.data)
    })
  </script>
</body>
//服务器响应
app.delete('/axios', (req, res) => {
  res.send('axios get 传递参数' + req.query.id)
})
4.3 post传递参数
第一种方式
//客户端请求
<body>
  <script type="text/javascript" src="js/axios.js"></script>
  <script type="text/javascript">
    //axios post传递参数
    axios.post('http://localhost:3000/axios', {
      uname: 'xuhui那束光',
      pwd: 123
    }).then(function (ret) {
      console.log(ret.data)
    })
  </script>
</body>
//服务器响应
app.post('/axios', (req, res) => {
  res.send('axios post 传递参数' + req.body.uname + '---' + req.body.pwd)
})
//服务器端支持
app.use(bodyParser.json());
第二种方式
//客户端请求
<body>
  <script type="text/javascript" src="js/axios.js"></script>
  <script type="text/javascript">
    //axios post传递参数
    var params = new URLSearchParams();
    params.append('uname', 'xuhui那束光');
    params.append('pwd', '5555');
    axios.post('http://localhost:3000/axios', params).then(function(ret){
      console.log(ret.data)
    })
  </script>
</body>
//服务器响应
app.post('/axios/:id', (req, res) => {
  res.send('axios put 传递参数' + req.params.id + '---' + req.body.uname + '---' + req.body.pwd)
})
4.4 put传递参数

参数传递方式与post相似(选项传参和URLsearchParams传参)

//客户端请求
<body>
  <script type="text/javascript" src="js/axios.js"></script>
  <script type="text/javascript">
    //axios put 请求传参
    axios.put('http://localhost:3000/axios/123', {
      uname: 'xuhui那束光',
      pwd: 123
    }).then(function (ret) {
      console.log(ret.data)
    })
  </script>
</body>
//服务器响应
app.put('/axios/:id', (req, res) => {
  res.send('axios put 传递参数' + req.params.id + '---' + req.body.uname + '---' + req.body.pwd)
})

5.axios的响应结果

响应结果的主要属性:

  • data:实际响应回来的数据
  • headers:响应头信息
  • status:响应状态码
  • statusText:响应状态信息
axios.get('http://localhost:3000/axios').then(function (ret) {
      console.log(ret)
})
//向服务器请求JSON接口
axios.get('http://localhost:3000/axios-json').then(function (ret) {
      console.log(ret.data.uname)
})
//服务器端准备一个JSON接口
app.get('/axios-json', (req, res) => {
  res.json({
    uname: 'xuhui',
    age: 12
  });
})

通过 对象.属性名(data.uname) 可以获取对应的值

6. axios的全局配置

在发送请求前,可以做一些配置信息

  • axios.defaults.timeout = 3000;//响应超时时间
  • axios.defaults.baseURL = 'http://localhost:3000/app';//默认地址
  • axios.defaults.headers[ ' mytoken' ] = 'aqwerarwrqrwqr' //设置请求头
1. 默认地址演示🔥
// 配置请求的基准URL地址
axios.defaults.baseURL = 'http://localhost:3000/';
//向服务器请求JSON接口
axios.get('axios-json').then(function (ret) {
      console.log(ret.data.uname)
})

//服务器端准备一个JSON接口
app.get('/axios-json', (req, res) => {
  res.json({
    uname: 'xuhui',
    age: 12
  });
})
2. 设置请求头
// 配置请求的基准URL地址
axios.defaults.baseURL = 'http://localhost:3000/';
// 配置请求头信息
axios.defaults.headers['mytoken'] = 'hello';
//向服务器请求JSON接口
axios.get('axios-json').then(function (ret) {
    console.log(ret.data.uname)
})

//服务器端准备一个JSON接口
app.get('/axios-json', (req, res) => {
  res.json({
    uname: 'xuhui',
    age: 12
  });
})

7. axios拦截器

1.请求拦截器🔥
//axios请求拦截器
axios.interceptors.request.use(function(config) {
    console.log(config.url)
    config.headers.mytoken = 'nihao';
    return config;
}, function(err){
      console.log(err)
})
//向服务器发起请求
axios.get('http://localhost:3000/adata').then(function(data){
      console.log(data)
})
2.响应拦截器🔥
//axios响应拦截器
axios.interceptors.response.use(function(res) {
      console.log(res)
      return res;
}, function(err){
      console.log(err)
})
//向服务器发起请求
axios.get('http://localhost:3000/adata').then(function (data) {
      console.log(data)
})
  1. (25行拦截器打印的信息 res)和 (31行最终需要的数据 ) 打印的信息是完全一样的。
  2. 但是,响应拦截器res中拿到的不是具体数据
上一篇 下一篇

猜你喜欢

热点阅读