wx.request

wx.request header: { ‘content-type’: ‘application/json’ // 默认值 },
header: { ‘content-type’: ‘application/x-www-form-urlencoded’ // post默认值 },
  1. wx.request({
  2. url: 'example.php',
  3. data: {
  4. x: '',
  5. y: ''
  6. },
  7. method:'POST',
  8. header: {
  9. 'content-type': 'application/json' // 默认值
  10. },
  11. success (res) {
  12. console.log(res.data)
  13. }
  14. })

封装

const baseUrl = "http://kumanxuan1.f3322.net:8001";

export default function request(url,params={}) {
  // 封装网络请求的代码
  return new Promise(function (resolve, reject) {
    wx.showLoading({
      title: '加载中...',
    })

    let token = wx.getStorageSync('token');
    var defaultHeader = {} //用于请求头加token
    //用户登录过时追加token
    if(token){
      if(params.header){
        // params有可能是一个{}, 则params.header就是undefined,params.header["X-Nideshop-Token"]报错
        params.header["X-Nideshop-Token"] = token
      }else{
          // 已经登录,但是没有传params
          defaultHeader = {
            "X-Nideshop-Token":token
          }
      }
    }

    // 发起请求
    wx.request({
      url: baseUrl + url,
      data: params.data || {},
      header: params.header || defaultHeader,
      method: params.method || 'GET',
      dataType: 'json',
      success: function(res) {
        wx.hideLoading();
        //调用成功但其他原因导致失败
        if(res.data.errno==0){
          resolve(res.data)
        }else{
          wx.showToast({
              title: res.data.errmsg,
              icon:"error",
              duration: 2000
          })
        }
      },
      fail: function(err) {
        wx.hideLoading();
        wx.showToast({
          title: err || '请求错误!',
        })
        reject(err)
      }
    })
  }) 
}

调用

api.js

import request from './request'

// 用户注册/登录
export const LoginByWebApi = params => request("/auth/loginByWeb", params);

组件

import {LoginByWebApi} from '../../request/api'

async loginSubmit(){
    //调用登录接口
    let res = await LoginByWebApi({
        method:'POST',
        data:{
            username:this.data.login_username,
            pwd:this.data.login_password
        }
   })
}