15. 发起请求

2023-05-22 10:28:14发布
39

小程序发起请求类似jquery的$.ajax


例子 :

Page({
  data: {
    name: ''
  },
  onShow() {
    wx.request({
      url: 'http://localhost:8080/login',
      method: 'get',
      data: {
        name: 'tom',
        password: '12345678'
      },
      success: (res)=> {
        this.setData({
          name: res.data.result.name
        })
      }
    })
  }
})


参数 :

属性类型默认值必填说明最低版本
urlstring开发者服务器接口地址
datastring/object/ArrayBuffer请求的参数
headerObject设置请求的 header,header 中不能设置 Referer。
content-type 默认为 application/json
timeoutnumber超时时间,单位为毫秒2.10.0
methodstringGETHTTP 请求方法
dataTypestringjson返回的数据格式
responseTypestringtext响应的数据类型1.7.0
enableHttp2booleanfalse开启 http22.10.4
enableQuicbooleanfalse开启 quic2.10.4
enableCachebooleanfalse开启 cache2.10.4
successfunction接口调用成功的回调函数
failfunction接口调用失败的回调函数
completefunction接口调用结束的回调函数(调用成功、失败都会执行)


method 的合法值

说明最低版本
OPTIONSHTTP 请求 OPTIONS
GETHTTP 请求 GET
HEADHTTP 请求 HEAD
POSTHTTP 请求 POST
PUTHTTP 请求 PUT
DELETEHTTP 请求 DELETE
TRACEHTTP 请求 TRACE
CONNECTHTTP 请求 CONNECT


dataType的合法值

说明最低版本
json返回的数据为 JSON,返回后会对返回的数据进行一次 JSON.parse
其他不对返回的内容进行 JSON.parse


responseType 的合法值

说明最低版本
text响应的数据为文本
arraybuffer响应的数据为 ArrayBuffer1


success 回调函数

属性类型说明最低版本
datastring/Object/Arraybuffer开发者服务器返回的数据
statusCodenumber开发者服务器返回的 HTTP 状态码
headerObject开发者服务器返回的 HTTP Response Header1.2.0
cookiesArray.<string>开发者服务器返回的 cookies,格式为字符串数组2.10.0
profileObject网络请求过程中一些调试信息2.10.4


更多详细资料请参考 : https://www.w3cschool.cn/weixinapp/weixinapp-network-request.html


使用promise封装请求

utils/request.js

const BASE_URL = 'http://111.230.246.226:8088';

const request = (params) => {
  return new Promise((resolve, reject) => {
    wx.request({
      url: BASE_URL + params.url,
      method: params.method || 'GET',
      data: params.data || {},
      header: params.header,
      success: (res) => {
        resolve(res.data)
      },
      fail: (err) => {
        reject(err);
      }
    })
  });
}

export default request;

api/user.js

import request from "../utils/request"

export const getList = () => {
  return request({
    url: '/getList',
    method: 'get',
    data: {
      nowPage: 1,
    }
  })
}

pages/index.js

import { getList } from "../../api/user"

Page({
  async onShow() {
    const res = await getList();
    console.log(res);
  }
})