Skip to content

请求工具 Request

自己在实际项目开发中,将常用的配置扩展到 uni.request、uni.uploadFile 中,方便使用。

兼容性

  • 兼容:✅
  • 不兼容:❌
  • 未知:❔
H5安卓苹果微信支付宝百度抖音QQ快手飞书京东
小红书鸿蒙360华为快应用快应用联盟

插件市场地址

DCloud 插件市场地址

使用示例

vue
<script>
    // 导入工具
    import { PureHttp } from "@/uni_modules/pure-http";

    // 创建实例
    const http = new PureRequest({
        // 配置项
        // ...
    });

    // 创建接口函数
    function apiGetUserInfo(config = {
        // 参数
        data: {}
    }) {
        return http.get("/api/user/info");
    }

    // 使用接口函数
    // 返回 Promise
    apiGetUserInfo().then((res) => {
        // 接口请求成功
        console.log(res);
    }).catch((err) => {
        // 接口请求失败
        console.error(err);
    });

    // 返回 TaskId
    const taskId = apiGetUserInfo({
        // 参数
        data: {},
        // 成功
        success: (data, config) => {
            console.log(data, config);
        },
        // 异常
        error: (err, config) => {
            console.error(err, config);
        },
        // 未请求通
        fail: (response, config) => {
            console.error(response, config);
        },
        // 完成
        complete: (res) => {
            console.log(response, config);
        }
    });
</script>

配置项

字段名说明类型默认值可选值版本
baseURL接口基准前缀(一般为接口域名地址)String""-+1.0.0
url接口地址,可以是绝对路径或者相对路径,如果是相对路径,最终会和 baseURL 合并成一个完整的 URLString""-+1.0.0
data请求的参数Object{}-+1.0.0
header请求的 header, header 中不能设置 RefererObject{}-+1.0.0
method请求类型,大写StringGETPOST、PUT、DELETE、CONNECT、HEAD、OPTIONS、TRACE、UPLOAD(扩展的)+1.0.0
timeout超时时间,单位毫秒Number30000-+1.0.0
dataType我要发送的数据类型,如果设为 json, 会对返回的数据进行一次 JSON.parse, 非 json 不会进行 JSON.parseStringjson-+1.0.0
responseType响应的数据类型Stringtextarraybuffer+1.0.0
sslVerify是否验证 ssl 证书Booleantruefalse+1.0.0
withCredentials跨域请求时是否携带凭证(cookies)Booleanfalsetrue+1.0.0
firstIpv4DNS 解析时是否优先使用 ipv4Booleanfalsetrue+1.0.0
enableHttp2是否开启 http2Booleanfalsetrue+1.0.0
enableQuic是否开启 quicBooleanfalsetrue+1.0.0
enableCache是否开启 cacheBooleanfalsetrue+1.0.0
enableHttpDNS是否开启 HttpDNS 服务Booleanfalsetrue+1.0.0
httpDNSServiceIdHttpDNS 服务商 IdString""-+1.0.0
enableChunked是否开启 transfer-encoding chunkedBooleanfalsetrue+1.0.0
forceCellularNetwork是否在 wifi 下使用移动网络发送请求Booleanfalsetrue+1.0.0
enableCookie开启后可在 headers 中编辑 cookieBooleanfalsetrue+1.0.0
cloudCache是否开启云加速Booleanfalsetrue+1.0.0
defer控制当前请求是否延时至首屏内容渲染后发送Booleanfalsetrue+1.0.0
files需要上传的文件列表。使用 files 时,filePathname 不生效Array[File]null-+1.0.0
fileType文件类型Stringimagevideo、audio+1.0.0
file要上传的文件对象Filenull-+1.0.0
filePath要上传文件资源的路径Stringnull-+1.0.0
name文件对应的 key , 开发者在服务器端通过这个 key 可以获取到文件二进制内容Stringfile-+1.0.0
formDataHTTP 请求中其他额外的 form dataObject{}-+1.0.0
success请求成功的回调函数,详细说明Functionnull-+1.0.0
error请求异常的回调函数,详细说明Functionnull-+1.0.0
fail请求失败的回调函数,详细说明Functionnull-+1.0.0
complete请求完成的回调函数,详细说明Function""-+1.0.0
requestTokenKey请求时 header 中携带的鉴权凭证名称StringAuthorization-+1.0.0
responseTokenKey接口返回 header 数据中携带的鉴权凭证名称StringAuthorization-+1.0.0
storageTokenKey存储在本地的鉴权凭证名称StringAuthorization-+1.0.0
requestRefreshTokenKey请求时 header 中携带的更新鉴权凭证名称Stringrefresh_token-+1.0.0
responseRefreshTokenKey接口返回 header 数据中携带的更新鉴权凭证名称Stringrefresh_token-+1.0.0
dataStatusKey数据中表示状态码的字段名称Stringcode-+1.0.0
dataStatusTextKey数据中表示状态文本的字段名称StringerrMsg-+1.0.0
dataSuccessStatusCode数据中表示成功状态的状态码[Number, String]0-+1.0.0
requestFailStatusCode自定义的表示请求失败的状态码[Number, String]-1-+1.0.0
before请求前的处理函数,详细说明Functionnull-+1.0.0
after请求后的处理函数,详细说明Functionnull-+1.0.0
codeFunctions状态码处理函数,详细说明Object{Function}{}-+1.0.0
showLoading是否显示 loadingBooleantruefalse+1.0.0
loadingTime请求超过此值设置的毫秒数后才会显示,设置为 0 会在请求后立即显示Number800-+1.0.0
loadingText提示内容String""-+1.0.0
loadingMask是否显示透明蒙层,防止触摸穿透Booleantruefalse+1.0.0
loadingShowFunction自定义显示 loading 的函数,参数为请求配置(config)Functionnull-+1.0.0
loadingHideFunction自定义隐藏 loading 的函数,参数为请求配置(config)Functionnull-+1.0.0
showSuccess是否显示 success 提示Booleanfalsetrue+1.0.0
successText提示内容String""-+1.0.0
successIcon图标Stringnonesuccess+1.0.0
successImage自定义图标的本地路径String""-+1.0.0
successMask是否显示透明蒙层,防止触摸穿透Booleantruefalse+1.0.0
successDuration提示的持续时间,单位毫秒Number2500-+1.0.0
successPositon提示的显示位置,填写有效值后只有 successText 属性生效String""top、center、bottom+1.0.0
successEndCallback提示显示结束后的回调,参数为接口返回的数据和请求配置(config)Functionnull-+1.0.0
successShowFunction自定义显示提示的函数,参数为接口返回的数据和请求配置(config)Functionnull-+1.0.0
showError是否显示 error 提示Booleanfalsetrue+1.0.0
errorText提示内容String""-+1.0.0
errorIcon图标Stringnoneerro+1.0.0
errorImage自定义图标的本地路径String""-+1.0.0
errorMask是否显示透明蒙层,防止触摸穿透Booleantruefalse+1.0.0
errorDuration提示的持续时间,单位毫秒Number2500-+1.0.0
errorPositon提示的显示位置,填写有效值后只有 errorText 属性生效String""top、center、bottom+1.0.0
errorEndCallback提示显示结束后的回调,参数为错误信息对象和请求配置(config)Functionnull-+1.0.0
errorShowFunction自定义显示提示的函数。参数为错误信息对象和请求配置(config)Functionnull-+1.0.0
showFail是否显示 fail 提示Booleanfalsetrue+1.0.0
failText提示内容String""-+1.0.0
failIcon图标Stringnonefail+1.0.0
failImage自定义图标的本地路径String""-+1.0.0
failMask是否显示透明蒙层,防止触摸穿透Booleantruefalse+1.0.0
failDuration提示的持续时间,单位毫秒Number2500-+1.0.0
failPositon提示的显示位置,填写有效值后只有 errorText 属性生效String""top、center、bottom+1.0.0
failEndCallback提示显示结束后的回调,参数为错误信息对象和请求配置(config)Functionnull-+1.0.0
failShowFunction自定义显示提示的函数。参数为错误信息对象和请求配置(config)Functionnull-+1.0.0
beforeFalseCode中断请求时的自定义状态码[Number, String]-20-+1.0.0
beforeFalseText中断请求时的自定义状态文本[Number, String]请求被拦截了-+1.0.0
afterFalseCode中断请求时的自定义状态码[Number, String]-40-+1.0.0
afterFalseText中断请求时的自定义状态文本[Number, String]响应被拦截了-+1.0.0

success()

  • 请求成功的回调函数。
  • 请求成功表示 http statusCode200,且数据状态码等于 dataSuccessStatusCode

参数

  • data: response.data 请求返回的数据。
  • config: 本次请求的配置。

error()

  • 请求异常的回调函数。
  • 请求异常表示 http statusCode 不为 200,或者数据状态码不等于 dataSuccessStatusCode

参数

  • error: 本次请求的错误信息。
    • 如果是 http 状态码异常,则 error 为包含错误码和错误信息的对象。
    • 如果是数据状态码异常,则 error 为接口返回的数据。
  • config: 本次请求的配置。

fail()

  • 请求失败的回调函数。
  • 请求失败包括: 网络不通、请求被强行中断、请求超时、找不到域名、ssl握手失败等。

参数

  • response: 请求返回的 response 对象。
  • config: 本次请求的配置。

complete()

  • 请求完成的回调函数,无论成功还是失败都会执行。

参数

  • response: 请求返回的 response 对象。
  • config: 本次请求的配置。

before()

  • 请求前的处理函数,该函数如果返回 true 则继续执行请求,否则请求不会执行并返回 Promise.reject(error)error 为一个包含错误码和错误信息的对象。

参数

  • config: 本次请求的配置。

after()

  • 请求后的处理函数,该函数会在请求完成后首先调用,无论成功还是失败都会执行。
  • 该函数返回 true 则表示继续执行后续逻辑,否则后续逻辑不会执行并返回 Promise.reject(error)error 为一个包含错误码和错误信息的对象。

参数

  • response: 请求返回的 response 对象。
  • config: 本次请求的配置。

codeFunctions

  • 状态码处理函数,该函数会在 after() 函数之后调用。
  • codeFunctions 是一个对象,键为状态码,值为处理函数,例如:
js
codeFunctions: {
    // 假如状态码为 1000 时表示登录过期
    1000: (response, config) {
        // 返回 true 表示继续执行后续逻辑
        // 提示:只有返回 ture 时才会继续执行后续逻辑,即使时非严谨的等同于 `true` 的数据,如 1、{}、[] 等也不会认为是 true。
        // return true;
        // return {} // 非严谨的等同于 true 的数据,也会终止后续逻辑的执行
        // return [] // 非严谨的等同于 true 的数据,也会终止后续逻辑的执行
        // return 1 // 非严谨的等同于 true 的数据,也会终止后续逻辑的执行

        // 终止后续逻辑的执行,并返回错误对象
        return {
            code: 1000,
            errMsg: "登录过期"
        }
    }
}
  • 处理函数的参数为:
    • response: 请求返回的 response 对象。
    • config: 本次请求的配置。
  • 该函数返回 true 则表示继续执行后续逻辑,否则后续逻辑不会执行并返回 Promise.reject(error)error 对应处理函数的返回值。

方法列表

方法名描述参数返回值
getGET 请求configPromise、TaskId
postPOST 请求configPromise、TaskId
uploadUPLOAD 请求configPromise、TaskId
deleteDELETE 请求configPromise、TaskId
connectCONNECT 请求configPromise、TaskId
headHEAD 请求configPromise、TaskId
optionsOPTIONS 请求configPromise、TaskId
traceTRACE 请求configPromise、TaskId
http请求configPromise、TaskId
setConfig设置配置config-
aborts中断实例下的所有请求--

返回值

  • getpostputdeleteheadoptionstracehttp 的返回值有两种。
  • 如果 config 中配置了 successerrorfailcomplete 中的任意一个函数,则返回 TaskId,否则返回 Promise

基于 MIT 许可发布