接口调用-axios用法

接口调用-axios用法

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

它具有一下特征:

  • 支持浏览器和node.js
  • 支持promise
  • 能拦截请求和响应
  • 自动转换JSON数据

axios的基本用法

axios官网下载,解压后在dist文件夹中找到js引入到所需项目中。

  • 基本语法
axios.get('地址')
     .then(参数=>{
         //data属性名称是固定的,用于获取后台响应数据
         console.log(参数.data);
     });

axios的常用API

  • get:查询数据
  • post:添加数据
  • put:修改数据
  • delete:删除数据
1.GET传递参数
  • 通过URL传递参数
axios.get('http://localhost:3000/axios?id=123')
     .then(ret=>{
         //获得的ret为objet
         console.log(ret.data);
     });

//后台
app.get('/axios', (req, res) => {
    res.send('axios get 传参'+req.query.id);
});

axios.get('http://localhost:3000/axios/123')
     .then(ret=>{
         //获得的ret为objet
         console.log(ret.data);
     });

//后台
app.get('/axios/:id', (req, res) => {
    res.send('axios get 传参'+req.params.id);
});
  • 通过params传递参数
axios.get('http://localhost:3000/axios',{
    params:{
        id:789
    }
}).then(function(ret){
        console.log(ret);
});
//后台
app.get('/axios', (req, res) => {
    //注意是query
    res.send('axios get 传参'+req.query.id);
});
2.DELETE传递参数
  • 传参方式与GET类似,将get改为delete
3.POST传递参数
  • 通过选项传递参数(默认传递的是json格式的数据)
axios.post('http://localhost:3000/axios',{
    uname:'tkrj',
    pwd:777
}).then(ret=>{
    console.log(ret.data);
});

//后台
app.post('/axios', (req, res) => {
    //注意是body
    res.send('axios post 传参' + req.body.uname);
})
  • 通过URLSearchParams传递参数(application/x-www-form-urlencoded)
const params = new URLSearchParams();
params.append('uname','tkrj');
params.append('pwd','777');
axios.post('http://localhost:3000/axios',paramsthen(ret=>{
        console.log(ret.data);
});
4.PUT传递参数
  • 传参与POST类似,将post改为put

axios的响应结果

  • data:实际响应回来的数据
  • headers:响应头信息
  • status:响应状态码
  • statusText:响应状态信息

axios内部已经处理好json响应数据

//后台
app.get('http://localhost:3000/axios', (req, res) => {
    res.json({
        uname:tkrj,
        age:19
    });
});
//此时前端获取的data为一个对象,可直接data.uname获取信息

axios的全局配置

  • axios.defaults.timeout = 3000;//超时时间
  • axios.defaults.baseURL = ‘http:/localhost:3000/app’;//默认地址
//配置请求的基准URL地址
axios.defaults.baseURL = 'http://localhost:3000/';
//请求地址可简写为:
axios.get('axios').then(function(ret){
        console.log(ret);
});
  • axios.defaults.headers[‘自定义名’] = ‘qwer’//设置请求头

axios拦截器

1.请求拦截器

在请求发出之前设置一些信息

axios.interceptors.request.use(function (config) {
    //可以获取信息:例如请求地址
    console.log(config.url);
    //在请求发出之前进行一些信息配置
    //例如配置请求头
    config.headers.mytoken = 'hello';
    return config;
}, function (err) {
    //处理错误信息
    console.log(err);
});
2.响应拦截器

在获取数据之前对数据做一些加工处理

axios.interceptors.response.use(function (res) {
    //在这里对返回数据进行处理,例如:
    var data = res.data;
    //返回处理后的数据,即前端获取到的数据
    return data;
    // return res; 即返回原(未处理)数据
}, function (err) {
    //处理错误信息
    console.log(err);
});
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 3中使用Axios进行网络请求的封装可以通过创建一个axios实例来实现。首先,安装axios库: ```bash npm install axios ``` 然后,在项目中创建一个`api`文件夹,用于存放API相关的文件。在该文件夹下创建一个`http.js`文件,用于封装axios。 ```javascript // api/http.js import axios from 'axios'; // 创建axios实例 const instance = axios.create({ baseURL: 'https://api.example.com', // 设置接口的基础url timeout: 5000, // 设置请求超时时间 }); // 请求拦截器 instance.interceptors.request.use( (config) => { // 在发送请求之前可以做一些操作,例如添加token等 return config; }, (error) => { return Promise.reject(error); } ); // 响应拦截器 instance.interceptors.response.use( (response) => { // 对响应数据进行处理,例如统一处理错误信息等 return response.data; }, (error) => { return Promise.reject(error); } ); export default instance; ``` 之后,在需要发送网络请求的地方,引入封装好的axios实例,并使用相应的HTTP方法进行请求。 例如,在一个`userService.js`文件中封装了用户相关的API: ```javascript // api/userService.js import http from './http'; export function getUser(id) { return http.get(`/user/${id}`); } export function updateUser(id, data) { return http.patch(`/user/${id}`, data); } export function deleteUser(id) { return http.delete(`/user/${id}`);} ``` 现在,你可以在Vue组件中调用这些API方法来发送网络请求了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值