当前位置:   article > 正文

微信小程序封装wx.request接口(两种方式)_wx.request({

wx.request({

方式一:在根目录新建一个api.js的文件用于存放wx.request的代码

api.js

  1. const app = getApp();
  2. let postApi = function (apiUrl, data, successCallback, errorCallback, completeCallback){
  3. let apiData = {};
  4. if (data){
  5. apiData=data;
  6. }
  7. apiData.user_token=app.globalData.userToken;
  8. wx.request({
  9. url: app.rootUrl + apiUrl,
  10. method: "POST",
  11. data: apiData,
  12. success: res => {
  13. successCallback(res.data);
  14. },
  15. fail: err => {
  16. if (errorCallback){
  17. errorCallback(err);
  18. }else{
  19. wx.showToast({
  20. title: e,
  21. icon: 'none',
  22. duration: 1500,
  23. mask: false
  24. })
  25. }
  26. },
  27. complete: () => {
  28. if (completeCallback) {
  29. completeCallback();
  30. }
  31. }
  32. })
  33. }
  34. export default postApi;

注意:在app.js中定义rootUrl,rootUrl是接口url的公共部分 ,apiUrl是接口url的剩余部分

index.js中调用接口

  1. const app = getApp();
  2. import postApi from "../../api.js";
  3. postApi("apiUrl?_tq=" + new Date().getTime(), data, res => {
  4. if (res.code == 0) {
  5. //请求成功执行
  6. }
  7. })

方式二:request.js文件

  1. // export const API_URL = ''; // 项目域名
  2. /**
  3. * 网络请求封装 fetch
  4. */
  5. export default function fetch(url, params, showLoading = true, method) {
  6. if (showLoading) {
  7. wx.showLoading({ title: '加载中' });
  8. }
  9. var cookie = wx.getStorageSync('cookie');
  10. if (!cookie) {
  11. cookie = '';
  12. }
  13. return new Promise((resolve, reject) => {
  14. wx.request({
  15. url: `${API_URL}${url}`,
  16. data: params || {},
  17. method: method || 'post',
  18. header: {
  19. "Accept": "*/*",
  20. "Content-Type": "application/json; charset=UTF-8'",
  21. "Cookie": cookie,
  22. },
  23. success: res => {
  24. resolve(res.data);
  25. },
  26. fail: error => {
  27. reject(error);
  28. },
  29. complete() {
  30. if (showLoading) {
  31. wx.hideLoading();
  32. }
  33. }
  34. })
  35. })
  36. }

在app.js文件引入该文件

在页面调用接口

在页面引入const app = getApp();

  1. getWxUser(userD) {
  2. var params = {
  3. name:user.name,
  4. phone:userD.phone
  5. }
  6. app.fetch(接口地址, params).then(
  7. ret => {
  8. if (ret.status) {
  9. } else {
  10. wx.showModal({
  11. showCancel: false,
  12. content: ret.errmsg
  13. });
  14. }
  15. }
  16. )
  17. },


2023.07.28 更新

  1. import siteinfo from '../../siteinfo';
  2. export const apis = (url, params, method = 'POST') => {
  3. let config = {};
  4. var cookie = wx.getStorageSync('cookie');
  5. if (!cookie) {
  6. cookie = '';
  7. }
  8. config['method'] = method;
  9. config['url'] = siteinfo.apiUrl + url;
  10. if (method == 'POST') {
  11. config['data'] = params;
  12. } else if (method == 'GET') {
  13. config['params'] = params;
  14. }
  15. return new Promise((resolve, reject) => {
  16. wx.request({
  17. ...config,
  18. header: {
  19. 'Content-Type': 'application/json; charset=UTF-8',
  20. "Cookie": cookie
  21. },
  22. success(request) {
  23. resolve(request.data);
  24. wx.hideLoading();
  25. },
  26. fail() {
  27. wx.hideLoading();
  28. reject();
  29. }
  30. })
  31. })
  32. }

siteinfo.js文件与app.json文件同级,里面是小程序的基本配置,详细见这篇文章

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/735368
推荐阅读
相关标签
  

闽ICP备14008679号