rename apiHow to apiTodo
This commit is contained in:
parent
e067e8f0f6
commit
dbecb6049b
44
index.js
44
index.js
@ -11,6 +11,7 @@
|
||||
import './ican-H5Api.js' // 对齐H5Api: https://ext.dcloud.net.cn/plugin?id=415 // 注意要取消默认自带的 showToast https://uniapp.dcloud.io/api/system/clipboard?id=%e6%b3%a8%e6%84%8f
|
||||
|
||||
module.exports = {
|
||||
// 用直观的色彩,代替 uview 的命名方式:
|
||||
RED: 'error',
|
||||
GREEN: 'success',
|
||||
BLUE: 'primary',
|
||||
@ -19,8 +20,7 @@ module.exports = {
|
||||
BLACK_TOAST: 'default',
|
||||
WHITE_BUTTON: 'default',
|
||||
|
||||
BACKEND: 'SERVER',
|
||||
|
||||
// 快速输出详尽提示,可用来取代 console.log
|
||||
clog(...message) {
|
||||
console.log(
|
||||
'【【【【【【【【【【',
|
||||
@ -30,6 +30,7 @@ module.exports = {
|
||||
)
|
||||
},
|
||||
|
||||
// 再次封装 uni.request,输入参数和 uni.request 保持基本一致。主要为了插入 _passtoken,简化 url 的组装,以及输出提示。
|
||||
async request({ method = 'POST', url, header = {}, data = {} }) {
|
||||
url = this.makeUrl(url)
|
||||
header._passtoken = uni.getStorageSync('_passtoken')
|
||||
@ -46,51 +47,60 @@ module.exports = {
|
||||
return [error, response]
|
||||
},
|
||||
|
||||
async callBackend({ backend = this.BACKEND, method = 'POST', apiVersion = 'api', apiWho, apiHow, apiWhat = {} }) {
|
||||
console.log('👇 < BackendRequest > ', { apiWho, apiHow, apiWhat }, ' < /BackendRequest > 👇')
|
||||
BACKEND: 'SERVER', // 通过变量来动态切换后台类型:服务器 SERVER,或云服务 CLOUD
|
||||
/** 统一 uni.request 和 uniCloud.callFunction 的调用方法,提供统一、透明的后台调用
|
||||
* 返回值:{ _state, 成功结果或错误结果 },其中 _state 除了后台返回的,还可以是
|
||||
* - CLIENT_BACKEND_BROKEN: 前端发现后台断线
|
||||
* - CLIENT_BACKEND_TIMEOUT: 前端发现后台超时
|
||||
* - CLINET_BACKEND_EXCEPTION: 前端发现后台异常
|
||||
**/
|
||||
async callBackend({ backend = this.BACKEND, httpMethod = 'POST', apiVersion = 'api', apiWho, apiTodo, apiWhat = {} }) {
|
||||
console.log('👇 < BackendRequest > ', { apiWho, apiTodo, apiWhat }, ' < /BackendRequest > 👇')
|
||||
let result = {}
|
||||
if (backend === 'CLOUD') {
|
||||
let { /* success, header, requestedId, */ result: resultCloud = {} } = await uniCloud
|
||||
.callFunction({
|
||||
name: apiWho,
|
||||
data: {
|
||||
apiHow,
|
||||
apiTodo,
|
||||
apiWhat,
|
||||
_passtoken: uni.getStorageSync('_passtoken'),
|
||||
// uniIdToken // uniCloud自动getStorageSync('uni_id_token')并传递为 uniIdToken;也可自行传入 uniIdToken
|
||||
// uniIdToken // uniCloud自动getStorageSync('uni_id_token')并传递为 uniIdToken;也可自行组装传入 uniIdToken
|
||||
},
|
||||
})
|
||||
.catch((exp) => {
|
||||
// 断网或云端返回异常 {errMsg, stack} = error
|
||||
if (/request:fail/.test(exp.errMsg)) {
|
||||
.catch((error) => { // {errMsg, stack} = error
|
||||
if (/request:fail/.test(error.errMsg)) {
|
||||
// 后台云服务无法连接
|
||||
return { result: { _state: 'CLIENT_BACKEND_BROKEN' } }
|
||||
} else {
|
||||
return { result: { _state: 'CLIENT_BACKEND_EXCEPTION' } }
|
||||
// 后台云服务返回异常
|
||||
return { result: { _state: 'CLIENT_BACKEND_EXCEPTION', error } }
|
||||
}
|
||||
})
|
||||
result = resultCloud
|
||||
} else {
|
||||
if (method === 'GET') {
|
||||
if (httpMethod === 'GET') {
|
||||
// 如果不是 POST 方法,要额外把参数JSON化
|
||||
for (let key in apiWhat) {
|
||||
apiWhat[key] = JSON.stringify(apiWhat[key])
|
||||
}
|
||||
}
|
||||
let [error, { data: resultServer = {}, statusCode, header, errMsg } = {}] = await uni.request({
|
||||
method,
|
||||
url: this.makeUrl(`${apiVersion}/${apiWho}/${apiHow}`),
|
||||
let [error, { statusCode, header, errMsg, data: resultServer = {} } = {}] = await uni.request({
|
||||
method: httpMethod,
|
||||
url: this.makeUrl(`${apiVersion}/${apiWho}/${apiTodo}`),
|
||||
header: { _passtoken: uni.getStorageSync('_passtoken') },
|
||||
data: apiWhat,
|
||||
})
|
||||
if (error) {
|
||||
if (error.errMsg === 'request:fail') {
|
||||
// 后台断线
|
||||
// 后台服务器无法连接
|
||||
result = { _state: 'CLIENT_BACKEND_BROKEN' }
|
||||
} else if (error.errMsg === 'request:fail timeout') {
|
||||
// 后台异常而超时返回
|
||||
// 后台服务器超时
|
||||
result = { _state: 'CLIENT_BACKEND_TIMEOUT' }
|
||||
} else {
|
||||
result = { _state: 'CLIENT_BACKEND_EXCEPTION' }
|
||||
// 后台服务器返回异常
|
||||
result = { _state: 'CLIENT_BACKEND_EXCEPTION', error }
|
||||
}
|
||||
} else {
|
||||
result = resultServer
|
||||
|
Loading…
Reference in New Issue
Block a user