项目中的api层你是如何处理的?

一、api层:

1、service.js

处理请求拦截和响应拦截

// requset/service.js
import axios from 'axios'
// 创建一个axios实例
const service = axios.create({
    // 设置请求的基础路径
    baseURL: "",
    // 设置请求超时的时间
    timeout: 8000
})

// 处理请求拦截 页面-->拦截器-->服务器,在请求发送之前统一执行某些操作
service.interceptors.request.use((config) => {
    // 成功的方法,在请求头统一添加token值
    let toekn = sessionStorage.getItem("token")
    token && (config.headers["token"] = token)
    return config
},(err)=>{
    // 失败的方法
    return Promise.reject(err)
})
// 处理响应拦截 服务器-->拦截器-->页面,在接收响应结果之前统一执行某些操作
service.interceptors.response.use((res)=>{
    // 成功的方法,可能后台返回的数据并不是我想要的
    // 处理状态码
    let data = res.data
    return data
},(err)=>{
    return Promise.reject(err)
    
})

export default service

2、common.js

处理请求方式和请求参数

import service from "./service"
// 处理get
export function requestGet(url,data){
    // 处理参数
    // 特殊的处理...
    return service.get(url,data)
}
// 处理post
export function requestPost(url,data){
    // 处理参数
    return service.post(url,data)
}

3、api文件夹

业务js

// api/app.js
// 处理业务
import {requestGet,requestPost} from "../common.js"
// 获取列表数据
export function getList(url,data){
    return new Promise((resolve,reject)=>{
        // 参数,地址
        requertGet(url,data).then(res=>{
            // 处理结果
            resolve(res)
        }).catch(err=>{
            // 处理结果
            reject(err)
        })
    })
}
// 登录
export function login(url,data){
    return new Promise((resolve,reject)=>{
        // 参数,地址
        requestPost(url,data).then(res=>{
            // 处理结果
            resolve(res)
        }).catch(err=>{
            // 处理结果
            reject(err)
        })
    })
}

二、使用示例

import {getList,login} from "@/request/api/app.js"

onMounted(()=>{
    getList("/getList").then((res)=>{
        console.log(res)
    })
    login("/login",{username:"",password:""}).then((res)=>{
        console.log(res)
    })
})
#前端##前端架构师#
全部评论

相关推荐

程序员小白条:找的太晚,别人都是大三实习,然后大四秋招春招的,你大四下了才去实习,晚1年
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
1
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务