request.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. import * as $auth from "./auth"
  2. import BASE_URL from './config.js'
  3. import qs from 'qs'
  4. function error(res){
  5. if (res.statusCode === 408 || res.statusCode === 401) {// 需要重新登录
  6. $auth.removeUserToken();
  7. uni.showToast({
  8. title: res.data,
  9. icon:"none"
  10. })
  11. }else if(res.statusCode === 404){
  12. uni.showToast({
  13. title:"404,路径找不到:"+res.data.path,
  14. icon:"none"
  15. })
  16. }else if(res.statusCode === 503){
  17. uni.showToast({
  18. title:"服务不可用",
  19. icon:"none"
  20. })
  21. }else if(res.statusCode === 504){
  22. uni.showToast({
  23. title:"网络连接错误",
  24. icon:"none"
  25. })
  26. }else{
  27. uni.showToast({
  28. title:res.data,
  29. icon:"none"
  30. })
  31. }
  32. }
  33. export function request(body){
  34. let {url,method,data,header, params, responseType} = body
  35. data = data || params || {};
  36. header = header || {'Content-Type': 'application/json; charset=utf-8'}
  37. method = method.toUpperCase() || "GET";
  38. responseType = responseType || "text"
  39. let token = $auth.getUserToken();
  40. if(token){
  41. header.token = token; // 获取token值
  42. }
  43. if(method === 'POST' && header['Content-Type'] === 'application/x-www-form-urlencoded; charset=utf-8'){
  44. data = qs.stringify(data, { allowDots: true, arrayFormat: 'indices' })
  45. }else if(method === 'GET' || method === 'DELETE' || method === 'PUT'){
  46. url = url + '?' + qs.stringify(data, { allowDots: true, arrayFormat: 'indices' })
  47. data = null
  48. }
  49. let promise = new Promise((resolve,reject)=>{
  50. uni.request({
  51. url: BASE_URL + url,
  52. header:header,
  53. data: data,
  54. method: method,
  55. responseType: responseType,
  56. success: res => {
  57. if(res && res.statusCode !== 200){
  58. error(res);
  59. reject(res)
  60. }
  61. resolve(res);
  62. },
  63. fail: (res) => {
  64. uni.hideLoading();
  65. error(res);
  66. reject(res);
  67. },
  68. complete: () => {
  69. }
  70. });
  71. })
  72. return promise;
  73. }
  74. // 单文件上传
  75. export function upload(url, filePath,filename, formData,header,success,fail){
  76. let name = filename || 'file';
  77. header = header || {};
  78. let token = $auth.getUserToken();
  79. if(token){
  80. header.token = token; // 获取token值
  81. }
  82. let promise = new Promise((resolve,reject)=>{
  83. uni.uploadFile({
  84. url: BASE_URL + url,
  85. filePath:filePath,
  86. name: 'file',
  87. formData: formData || {},
  88. header:header,
  89. success: res => {
  90. resolve(res.data);
  91. },
  92. fail: (res) => {
  93. uni.hideLoading();
  94. let err = JSON.parse(res);
  95. error(err);
  96. reject(err);
  97. },
  98. complete: () => {
  99. }
  100. });
  101. })
  102. return promise;
  103. }
  104. export function download(url,header,success,fail){
  105. header = header || {};
  106. let token = $auth.getUserToken();
  107. if(token){
  108. header.token = token; // 获取token值
  109. }
  110. if(!url){
  111. return;
  112. }
  113. let downloadTask = uni.downloadFile({
  114. url: url,
  115. success: (res) => {
  116. if(res.statusCode===200){
  117. if(success){
  118. success.call(null,res);
  119. }
  120. }else{
  121. if(fail){
  122. fail.call(null,res);
  123. }
  124. }
  125. },
  126. fail:(res) => {
  127. let err = JSON.parse(res);
  128. error(err);
  129. if(fail){
  130. fail.call(null,err)
  131. }
  132. },
  133. complete: () => {
  134. }
  135. });
  136. return downloadTask;
  137. }
  138. export default request