# 一、请求示例:

步骤1: 在/common/request/api.js中添加接口请求函数

export const UserLogin = (data) => request("user/login", data, POST)    //登录
export const UserInfo = (data) => request("user/info", data, GET)       //获取用户信息

export const GoodsList = (data) => request("goods/list", data, GET)       //获取商品列表
export const GoodsDetail = (data) => request("goods/info", data, GET)     //获取订单详情
export const GoodsTypeList = (data) => request("goods/types", data, GET)  //获取商品分类列表

export const OrderList = (data) => request("order/list", data, GET)       //获取订单列表
export const OrderDetail = (data) => request("order/info", data, GET)     //获取订单详情

集中管理API,可以清楚看到项目中所使用的接口地址和请求方式,同时也便于修改。

简单的函数可以使用箭头函数,清晰明了;同时随时可以拓展函数内容,具有较高的灵活性。

编写规范:

  • 推荐使用大驼峰命名函数,便于区分普通函数与接口函数。
  • 将同一模块的接口写到一起,同一模块使用同一个单词前缀,模块与模块之间空行。

步骤2: 在页面或者组件中,按需导入接口函数。

import { UserLogin } from "@/common/request/api.js"

export default {

    methods: {

        handleLogin(){
            UserLogin({
                account: "Herrona",
                password: "123456",
            }).then((res)=>{
                console.log("res", res)
            })
        },

    }
}

# 二、 公共请求说明

# 1.请求方式的封装

在/common/request/methods中,拓展了请求方式,将Content-Type与请求方式封装在一起,用于声明请求方式与请求格式。

一般项目都是采用单一Content-Type形式,但是也有特殊情况两种情况都存在的,所以使用此方法加以区分。

在/common/request/api将这些常量导入使用。

// 添加_FROM表示application/x-www-form-urlencoded请求; 添加_JSON表示 application/json请求

export const GET_JSON = "GET_JSON"
export const GET_FORM = "GET_FORM"

export const POST_JSON = "POST_JSON"
export const POST_FORM = "POST_FORM"

export const PUT_JSON = "PUT_JSON"
export const PUT_FORM = "PUT_FORM"

export const GELETE_JSON = "GELETE_JSON"
export const GELETE_FORM = "GELETE_FORM"

export const GET = GET_JSON
export const POST = POST_JSON
export const PUT = PUT_JSON
export const GELETE = GELETE_JSON

# 2.请求头的封装

请求头以函数形式封装并且单独导出,可以用于请求和文件上传的请求头。

# 3.公共请求函数

基于uniapp的 uni.request() 进行封装, Promise风格。

主要实现了以下逻辑的深度封装:

  1. 基本请求域名, 读取/common/config/url中的apiBaseURL变量。 实际请求地址为基本请求域名+api地址

  2. 获取真实的请求方式

  3. 对响应信息进行处理:

这里假设后端返回的接口标准格式为:

{
    "msg": "操作成功",
    "code": 1,
    "data": {}, //任意类型的数据
}

只有当自定义code为1或者200时,进入then回调,其他情况视为异常情况将进入catch回调。这样做的好处是then回调中无须再进行繁琐的code值判断。

对异常情况进行的默认处理有:

  • 状态401时,表示未授权,此时将触发登录提示弹窗
  • 请求失败例如请求超时、服务器问题等,将使用toast提示。
  1. 接口的灵活性拓展,请求函数的第四个参数为选项参数对象
  • 接口不需要token验证时,可以在/request/api中,设置{ auth: false },示例如下
export const UserLogin = (data) => request("user/login", data, POST, { auth: false })    //登录
  • 接口不需要校验自定义code时,可以在/request/api中, 设置{ checkCode: false }。 此时无论响应信息是什么结构都会进入then回调,示例如下
export const BankBind = (data) => request("bank/bind", data, POST, { checkCode: false })    //第三方绑卡
  • 显示加载中Loading,默认为true(如果不需要则可以默认设置为false)。

如果某个接口不需要提示,可以在/request/api中, 设置{ load: false }。

或者自定义提示文本。示例如下:

export const CheckStatus = (data) => request("user/check", data, POST, { load: false })         //检查账号状态
export const UserUpdate = (data) => request("user/update", data, POST, { load: '正在提交' })    //修改账号信息
  1. 接口请求调试

    为了方便开发调试,默认在开发环境中将监控每一次请求,若接口报错,将会弹出错误Modal框,可以进行错误复制,提升开发效率。

上次更新时间: 2/22/2023, 6:02:58 PM