可分层处理。
相当于dao,主要封装一下request方法
/**
* name: api.js
* description: request处理基础类
* author: 齐传富
* date: 2019-4-30
*/
class request {
constructor() {
this._header = {}
}
/**
* 设置统一的异常处理
*/
setErrorHandler(handler) {
this._errorHandler = handler;
}
/**
* GET类型的网络请求
*/
getRequest(url, data, header = this._header) {
return this.requestAll(url, data, header, 'GET')
}
/**
* DELETE类型的网络请求
*/
deleteRequest(url, data, header = this._header) {
return this.requestAll(url, data, header, 'DELETE')
}
/**
* PUT类型的网络请求
*/
putRequest(url, data, header = this._header) {
return this.requestAll(url, data, header, 'PUT')
}
/**
* POST类型的网络请求
*/
postRequest(url, data, header = this._header) {
return this.requestAll(url, data, header, 'POST')
}
/**
* 网络请求
*/
requestAll(url, data, header, method) {
return new Promise((resolve, reject) => {
wx.request({
url: url,
data: data,
header: header,
method: method,
success: (res => {
if (res.statusCode === 200) {
//200: 服务端业务处理正常结束
resolve(res)
} else {
//其它错误,提示用户错误信息
if (this._errorHandler != null) {
//如果有统一的异常处理,就先调用统一异常处理函数对异常进行处理
this._errorHandler(res)
}
reject(res)
}
}),
fail: (res => {
if (this._errorHandler != null) {
this._errorHandler(res)
}
reject(res)
})
})
})
}
}
export default request
相当于service
/**
* name: agriknow.js
* description: 飞象鲜生服务器提供的服务
* author: 齐传富
* date: 2019-4-30
*/
import request from './request.js'
class agriknow {
constructor() {
this._baseUrl = 'https://***********/lobster/' //前置域名。
this._defaultHeader = { 'data-tupe': 'application/json' } //附加请求头
this._request = new request //上面的封装类
this._request.setErrorHandler(this.errorHander) //设置统一的异常处理方法
}
/**
* 自定义统一的异常处理方法
*/
errorHander(res) {
console.error(res)
}
/**
* 查询所有新闻列表
*/
getNews(page = 1, size = 10) {
let data = { page: page, size: size } //数据格式
return this._request.getRequest(this._baseUrl + 'news/client', data).then(res => res.data)
}
/**
* 获取所有课程
*/
getCourseList(page = 1, size = 10, key = null) {
let data = key != null ? { page: page, size: size, queryValue: key } : { page: page, size: size }
return this._request.getRequest(this._baseUrl + '/course/mobile', data).then(res => res.data)
}
/**
* 获取类型列表
*/
getCommType(){
let data = null
return this._request.getRequest(this._baseUrl + 'Category/findAllCategory',data).then(res => res.data)
}
/**
* 解释一下,每个方法映射一个接口,可使用get post delect put 请求方式。
* 然后。then 方法是Promise的成功回调。这里直接把数据返回。
*/
}
//暴露该类
export default agriknow
app.js
1.引入agriknow 类 import agriknow from './common/agriknow.js'
2. app.js 加入公共变量方便其他类直接使用 agriknow: new agriknow()
使用
首先要引一下全局的app.js const app = getApp()
//获取商品类别列表
getCommType: function() {
app.agriknow.getCommType().then(res => { //方法内为具体操作,这里简单存值
this.setData({
munt_tepy: res.data
})
})
}