Request.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. import {
  2. requestEncode,
  3. responseDecode
  4. } from "./ProtoMap";
  5. import { BASEURL } from "../API/Constant";
  6. let token = "";
  7. // 登录
  8. function login() {
  9. uni.login({
  10. provider: 'weixin',
  11. success: function (loginRes) {
  12. const data = {
  13. server: 2,
  14. servant: 1001,
  15. version: 3,
  16. data: {
  17. // phone:Buffer.from('3246541321'),
  18. phone: '17688768233',
  19. code: loginRes.code,
  20. verifyCode: 'asdasd',
  21. nickname: "4",
  22. head_url: "6",
  23. system_type: 1,
  24. }
  25. }
  26. request(data).then((res) => {
  27. // console.log(res)
  28. if(res.code === 0 && res.data.errInfo.errorCode === 0) {
  29. token = res.data.token;
  30. // 缓存token
  31. uni.setStorage({
  32. key: 'token',
  33. data: res.data.token,
  34. });
  35. return;
  36. };
  37. uni.showToast({
  38. title: res.msg,
  39. duration: 2000,
  40. icon: "none"
  41. });
  42. }).catch((res)=> {
  43. console.log("catch")
  44. console.log(res);
  45. });
  46. }
  47. });
  48. // return res
  49. };
  50. // 获取token
  51. function getToken() {
  52. try {
  53. const value = uni.getStorageSync('token');
  54. if (value) {
  55. token = value;
  56. } else {
  57. login();
  58. }
  59. } catch (e) {
  60. login();
  61. }
  62. }
  63. // 获取token
  64. getToken();
  65. // login();
  66. const defaultHeader = {
  67. "X-Requested-With": "XMLHttpRequest",
  68. "Content-Type": "application/x-protobuf",
  69. }
  70. // 拦截器
  71. uni.addInterceptor('request', {
  72. invoke(args) {
  73. // request 触发前拼接 url
  74. args.url = BASEURL;
  75. if(token) {
  76. args.header.token = token;
  77. };
  78. },
  79. success(args) {
  80. // 请求成功后
  81. },
  82. fail(err) {
  83. console.log('interceptor-fail',err)
  84. },
  85. complete(res) {
  86. console.log('interceptor-complete',res)
  87. }
  88. })
  89. /**
  90. * POST请求
  91. * @param {*} request
  92. * @returns
  93. */
  94. function request(data, type = "POST", header = defaultHeader) {
  95. return new Promise((resolve, reject) => {
  96. uni.request({
  97. header: header,
  98. method: type,
  99. timeout: 15000,
  100. dataType: 'protobuf',
  101. responseType: 'TEXT',
  102. data: requestEncode(data)
  103. }).then((res) => {
  104. res.map((response) => {
  105. if (response && response.statusCode === 200) {
  106. try {
  107. let resJson = JSON.parse(response.data);
  108. if (resJson.code === 0) {
  109. let arrayBuffer = Buffer.from(resJson.data,'base64');
  110. let data = responseDecode(arrayBuffer);
  111. let code = 0;
  112. let msg = "success";
  113. if (typeof data.errInfo !== 'undefined') {
  114. code = data.errInfo.errorCode;
  115. if (typeof data.errInfo.errorMessage === 'string') {
  116. msg = data.errInfo.errorMessage;
  117. } else {
  118. msg = Buffer.from(data.errInfo.errorMessage).toString();
  119. };
  120. };
  121. resolve({
  122. data,
  123. code,
  124. msg
  125. });
  126. } else {
  127. resolve({
  128. code: resJson.code,
  129. msg: resJson.info
  130. });
  131. }
  132. } catch (e) {
  133. resolve({
  134. code: -1,
  135. msg: e.toString(),
  136. });
  137. }
  138. return;
  139. };
  140. // 没有数据或者返回错误
  141. // resolve({
  142. // code: 1006,
  143. // msg: "数据错误",
  144. // });
  145. })
  146. }).catch((error) => {
  147. let [err, res] = error;
  148. reject(err);
  149. })
  150. })
  151. }
  152. module.exports = request;