当前位置: 首页 > news >正文

腾讯网站建设的基本情况怎么做外贸企业网站

腾讯网站建设的基本情况,怎么做外贸企业网站,网站开发技术书籍,榆林网站建设公司原生微信小程序中进行 API 请求 当在原生微信小程序中进行 API 请求时#xff0c;封装请求可以提高代码的可维护性和可扩展性。在本篇博客中#xff0c;我们将一步步介绍如何进一步封装请求#xff0c;并添加请求超时、拦截器和请求取消功能。 第一步#xff1a;基本请求封…原生微信小程序中进行 API 请求 当在原生微信小程序中进行 API 请求时封装请求可以提高代码的可维护性和可扩展性。在本篇博客中我们将一步步介绍如何进一步封装请求并添加请求超时、拦截器和请求取消功能。 第一步基本请求封装 首先我们创建一个用于发送 HTTP 请求的基本封装。在微信小程序中我们使用 wx.request 发送请求这里我们将它封装成一个 Promise 风格的函数 // request.jsfunction request(url, method, data, header {}) {return new Promise((resolve, reject) {wx.request({url: url,method: method,data: data,header: {content-type: application/json, // 根据需求设置请求头...header,},success: (res) {if (res.statusCode 200) {resolve(res.data);} else {reject(new Error(请求失败));}},fail: (err) {reject(err);},});}); }export function get(url, data {}, header {}) {return request(url, GET, data, header); }export function post(url, data {}, header {}) {return request(url, POST, data, header); }这段代码中我们定义了两个函数 get 和 post分别用于发送 GET 和 POST 请求并返回一个 Promise以便在请求成功或失败时进行处理。 第二步请求超时 为了实现请求超时功能我们可以使用 Promise 的 Promise.race 方法。我们创建一个新的 Promise设置一个超时时间然后将它与实际请求的 Promise 进行竞争。如果超时时间内请求未完成我们可以取消请求并抛出一个超时错误。 // request.jsfunction requestWithTimeout(url, method, data, header {}, timeout 5000) {return new Promise((resolve, reject) {const timer setTimeout(() {reject(new Error(请求超时));}, timeout);wx.request({url: url,method: method,data: data,header: {content-type: application/json, // 根据需求设置请求头...header,},success: (res) {clearTimeout(timer);if (res.statusCode 200) {resolve(res.data);} else {reject(new Error(请求失败));}},fail: (err) {clearTimeout(timer);reject(err);},});}); }export function getWithTimeout(url, data {}, header {}, timeout 5000) {return requestWithTimeout(url, GET, data, header, timeout); }export function postWithTimeout(url, data {}, header {}, timeout 5000) {return requestWithTimeout(url, POST, data, header, timeout); }第三步请求拦截器和响应拦截器 拦截器允许我们在请求发出前和响应返回后进行一些自定义操作例如添加请求头、记录日志或处理错误信息。我们可以通过使用函数链来实现这一功能。首先我们创建两个空数组 requestInterceptors 和 responseInterceptors用于存储拦截器函数。然后我们通过一个函数来添加拦截器每个拦截器都是一个函数接受 config请求配置或 response响应对象作为参数并可以对它们进行修改。最后在请求或响应时我们通过遍历这些拦截器数组依次执行它们。 // request.jslet requestInterceptors []; let responseInterceptors [];// 添加请求拦截器 export function addRequestInterceptor(interceptor) {requestInterceptors.push(interceptor); }// 添加响应拦截器 export function addResponseInterceptor(interceptor) {responseInterceptors.push(interceptor); }function executeInterceptors(interceptors, data) {return interceptors.reduce((prevData, interceptor) {return interceptor(prevData);}, data); }function request(url, method, data, header {}, timeout 5000) {// ...// 执行请求拦截器config executeInterceptors(requestInterceptors, config);// ...// 执行响应拦截器responseData executeInterceptors(responseInterceptors, responseData);// ... }// ...你可以使用 addRequestInterceptor 和 addResponseInterceptor 函数来添加自定义的拦截器例如 import { addRequestInterceptor, addResponseInterceptor } from ./request;// 添加请求拦截器 addRequestInterceptor((config) {// 在请求发出前进行一些操作例如添加请求头config.header[Authorization] Bearer getToken();return config; });// 添加响应拦截器 addResponseInterceptor((response) {// 在响应返回后进行一些操作例如处理错误信息if (response.statusCode ! 200) {throw new Error(请求失败);}return response.data; });第四步请求取消 为了实现请求取消功能我们可以使用 Axios 风格的取消令牌CancelToken。我们需要创建一个 CancelToken 对象并将它包含在请求的配置中。然后在需要取消请求的地方我们可以调用 cancel 方法取消请求。 // request.jslet cancelToken new wx.miniProgram.CancelToken();function requestWithCancel(url, method, data, header {}, timeout 5000) {return new Promise((resolve, reject) {wx.request({url: url,method: method,data: data,header: {content-type: application/json, // 根据需求设置请求头...header,},cancelToken: cancelToken.token, // 设置取消令牌success: (res) {if (res.statusCode 200) {resolve(res.data);} else {reject(new Error(请求失败));}},fail: (err) {reject(err);},});}); }// 取消请求 export function cancelRequest() {cancelToken.cancel(请求取消); } 进一步封装请求超时、拦截器和请求取消功能可以提高代码的灵活性和可维护性。以下是一个更完整的原生微信小程序 API 请求封装包括这些功能javascript Copy code // api.js// 创建一个取消请求的 CancelToken const CancelToken wx.miniProgram.CancelToken;// 默认配置 const defaultConfig {baseURL: , // 请求基础 URLtimeout: 5000, // 请求超时时间毫秒 };// 请求拦截器 function requestInterceptor(config) {// 在请求发送之前可以进行一些操作例如添加请求头config.header {content-type: application/json,...config.header,};return config; }// 响应拦截器 function responseInterceptor(response) {// 在收到响应后可以进行一些操作例如处理错误信息if (response.statusCode ! 200) {throw new Error(请求失败);}return response.data; }// 创建请求实例 const instance wx.request.create({timeout: defaultConfig.timeout,header: {content-type: application/json,}, });// 发送请求的函数 function sendRequest(config) {const { baseURL, timeout, ...restConfig } { ...defaultConfig, ...config };const { url, method, data, params, cancelToken, ...otherConfig } restConfig;// 合并请求 URLconst fullURL ${baseURL}${url};// 创建 CancelToken 实例const source CancelToken.source();// 设置取消令牌otherConfig.cancelToken source.token;// 发送请求return instance({url: fullURL,method,data,params,...otherConfig,}).then(responseInterceptor).catch((error) {if (wx.miniProgram.isCancel(error)) {// 请求被取消console.log(请求已取消);} else {// 请求发生错误console.error(请求失败, error);}throw error;}); }export { sendRequest, requestInterceptor, responseInterceptor };在上面的代码中添加了以下功能 请求超时可以通过设置 timeout 来指定请求超时时间如果请求在规定时间内未完成将会被取消。 请求拦截器和响应拦截器可以在发送请求前和处理响应后进行一些自定义操作例如添加请求头或处理错误信息。 请求取消我们使用 Axios 的取消令牌CancelToken来支持请求取消功能。可以在请求配置中设置 cancelToken然后在需要取消请求的地方调用 source.cancel()。 使用这个进一步封装的请求函数 sendRequest你可以在项目中更加灵活地处理网络请求同时在拦截器中进行自定义操作以满足不同场景的需求。在小程序的页面中导入 sendRequest 并使用它来发起请求即可。 以上就是原生微信小程序中进行 API 请求时感谢大家的阅读 如碰到其他的问题 可以私下我 一起探讨学习 如果对你有所帮助还请 点赞 收藏谢谢~ 关注收藏博客 作者会持续更新…
http://www.sadfv.cn/news/145112/

相关文章:

  • 抚州制作网站哪家公司好葫芦岛住房和城乡建设厅网站
  • iis6.0不能新建网站智慧团建官方网站登录入口
  • 手机网站建站软件做网站服务好
  • 如何用群晖做自己的网站怎么弄自己的网址
  • 建设好网站外链有哪些方式公司在线网站制作系统
  • 移动商城网站开发抖音代运营价格
  • 高速建设材料在哪个网站购买公司网站建设需推广
  • idea 网站开发官网建设公司有哪些
  • 东莞茶山网站建设选择一个网站进行优化
  • 广州建网站的网络公司免费制作企业宣传视频app
  • 青羊区建设局网站企业注册登记流程
  • 做坏事网站南京网站建设公司有哪些
  • txt电子书下载网站推荐广告公司简介100字
  • 上海网站建设 app开发手机能创建网站吗
  • 建瓯企业网站建设网站制作前的图片路径
  • 河南网站建设哪个公司做得好网站友情链接模板
  • 建设银行官网首页网站购纪念币阿里云网站更换域名
  • 做外贸网站公司哪家好做软件赚钱还是做网站赚钱
  • 浙江龙泉建设局网站织梦网站首页自动更新
  • 天津网站排名提升多少钱wordpress百度自动推送安装失败
  • 常州高端网站建设百度竞价推广登录入口
  • 做平台网站一般有php还是jsvue cms 网站开发
  • o2o网站建设流程东莞市企业招聘信息网
  • 上海模板网站建站公司网站有收录没排名
  • 新乡手机网站建设公司h5页面生成工具
  • 做网站大约多少钱建筑人才网河南省2022年3月安全员
  • 在什么网站能帮人做ppt网站admin目录名怎么改
  • 博物馆网站建设的根本意义长沙医疗网站建设
  • 做博客网站怎么赚钱乐清开发网站公司
  • 网站建设基本流程教学视频在线取公司名字 免费