赞
踩
之前在vue里我们使用过axios发请求,但是在实际开发中,都会对axios进行封装。
步骤较简单:
import axios from "axios" // 创建axios 赋值给常量service const service = axios.create({ baseURL: 共同的路径(url), timeout: (超时时间,纯数字,单位毫秒) headers: {//请求头 "Content-Type": "application/json;charset=UTF-8", // "Content-Type": "application/x-www-form-urlencoded;charset=utf-8", } }); // 添加请求拦截器(Interceptors) service.interceptors.request.use(function (config) { // 发送请求之前做写什么 let token = localStorage.getItem("token"); // 如果有token if(token){ // 将token放在请求头 config.headers.authorization = token; } return config; }, function (error) { // 请求错误的回调 return Promise.reject(error); }); // 添加响应拦截器 service.interceptors.response.use(function (response) { // 对响应数据做点什么 return response; }, function (error) { // 响应错误的回调 return Promise.reject(error); }); export default service
import service from "../utils/services"; // 这个模块封装各种请求方式(如:get,post等等) export function post(url,params){ return new Promise(function(resovle,reject){ service.post(url,params) .then(res=>{ if(!res.data){ resovle(res); } resovle(res.data); },err=>{ reject(err); }) .catch(err=>{ reject(err); }); }); } export function get(url,params){ let querystr = ""; for(let key in params){ if(params[key]){ querystr += `${key}=${params[key]}&` } } return new Promise(function(resovle,reject){ service.get(url+"?"+querystr) .then(res=>{ if(!res.data){ resovle(res); } resovle(res.data); },err=>{ reject(err); }) .catch(err=>{ reject(err); }); }); }
import * as axiosBase from './index.js';
export let get = function (params) {
params = params || {}
return axiosBase.GET('/books', params)
}
import {get} from "../../api/index"
//注意:这里的data就是需要的数据,不再是res.data
get().then(data=>{
this.setState({
data:data
});
});
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。