http.js 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. import Axios from 'axios';
  2. import { PageList } from '../pages/Router';
  3. import app from '../../app.json';
  4. import utils from '../utils/utils';
  5. //config
  6. //const hostUrl = 'http://161.117.183.142/';
  7. const hostUrl = app.product ? 'https://csms.chargeco.global/' : 'https://uat.chargeco.global/';
  8. //const hostUrl = app.product ? 'https://csms.chargeco.global/' : 'https://test.internal.chargeco.global/'
  9. const service = 'chargeco/'
  10. export const host = hostUrl;
  11. //在生产模式显示日志
  12. const DEBUG_PROD = false;
  13. //日志开关
  14. const DEBUG = DEBUG_PROD || (app.debug && !app.product);
  15. Axios.defaults.timeout = 30000;
  16. Axios.defaults.timeoutErrorMessage = "Connection timeout, please check your network.";
  17. Axios.interceptors.response.use((response) => {
  18. if (DEBUG) {
  19. console.log('-------', response.config.method, response.config.url);
  20. console.log('-------', response.status, JSON.stringify(response.data));
  21. }
  22. if (response.status != 200) {
  23. utils.logEventTracking("api_error: " + response.config.url + ", " + response.status)
  24. }
  25. if (response.data.code == '401' || response.data.code == '402') {
  26. setAccessToken('');
  27. startPage(PageList.login, {action: response.data.code});
  28. return Promise.reject('Need sign in');
  29. }
  30. if (response.data.code == '500' || response.data.code == '502') {
  31. setAccessToken('');
  32. return Promise.reject('Sever error');
  33. }
  34. return response.data;
  35. }, (error) => {
  36. console.info('-------error', error);
  37. utils.logEventTracking("api_failure: " + error)
  38. return Promise.reject(error);
  39. });
  40. export const get = (path, params) => {
  41. utils.logEventTracking("api_get: " + path)
  42. return new Promise((resolve, reject) => {
  43. Axios.get(host + service + path, {
  44. params: params,
  45. method: 'GET',
  46. headers: {
  47. 'Accept': 'application/json',
  48. 'lang': global.currentLocale,
  49. 'accessToken': global.accessToken ?? ''
  50. }
  51. }).then(res => {
  52. if (res.success) {
  53. resolve(res);
  54. } else if (res.msg) {
  55. reject({err: res.msg, ...res});
  56. } else {
  57. reject('Request Failed');
  58. }
  59. }).catch(error => {
  60. console.info('HTTP-ERROR', error);
  61. reject(error);
  62. });
  63. });
  64. }
  65. export const post = (path, params) => {
  66. utils.logEventTracking("api_post: " + path)
  67. return new Promise((resolve, reject) => {
  68. Axios.post(host + service + path, params, {
  69. method: 'POST',
  70. headers: {
  71. 'Accept': 'application/json',
  72. 'lang': global.currentLocale,
  73. 'accessToken': global.accessToken ?? ''
  74. }
  75. }).then(res => {
  76. if (res.success) {
  77. resolve(res);
  78. } else if (res.msg) {
  79. reject({err: res.msg, ...res});
  80. } else {
  81. reject('Request Failed');
  82. }
  83. }).catch(error => {
  84. console.info('HTTP-ERROR', error);
  85. reject(error);
  86. });
  87. });
  88. }
  89. export const upload = (path, params, header={}) => {
  90. utils.logEventTracking("api_upload: " + path)
  91. return new Promise((resolve, reject) => {
  92. Axios.post(host + service + path, params, {
  93. method: 'POST',
  94. headers: {
  95. 'lang': global.currentLocale,
  96. 'Accept': 'application/json',
  97. 'Content-Type': 'multipart/form-data',
  98. 'accessToken': global.accessToken ?? '',
  99. ...header
  100. }
  101. }).then(res => {
  102. if (res.success) {
  103. resolve(res);
  104. } else if (res.msg) {
  105. reject({err: res.msg, ...res});
  106. } else {
  107. reject('Request Failed');
  108. }
  109. }).catch(error => {
  110. console.info('HTTP-ERROR', error);
  111. reject(error);
  112. });
  113. })
  114. }
  115. export const del = (path) => {
  116. utils.logEventTracking("api_delete: " + path)
  117. return new Promise((resolve, reject) => {
  118. Axios.delete(host + service + path, {
  119. method: 'DELETE',
  120. headers: {
  121. 'Accept': 'application/json',
  122. 'lang': global.currentLocale,
  123. 'accessToken': global.accessToken ?? ''
  124. }
  125. }).then(res => {
  126. if (res.success) {
  127. resolve(res);
  128. } else if (res.msg) {
  129. reject({err: res.msg, ...res});
  130. } else {
  131. reject('Request Failed');
  132. }
  133. }).catch(error => {
  134. console.info('HTTP-ERROR', error);
  135. reject(error);
  136. });
  137. });
  138. }
  139. export const GET = (url, params) => {
  140. var request = host + service + url;
  141. if (params) {
  142. var keys = ''
  143. for (let key in params) {
  144. if (keys != '') {
  145. keys += '&';
  146. }
  147. keys += key + '=' + encodeURI(params[key]);
  148. }
  149. if (keys !== '') {
  150. request += '?' + keys;
  151. }
  152. }
  153. return new Promise((resolve, reject) => {
  154. fetch(request, {
  155. method: 'GET',
  156. headers: {
  157. 'lang': global.currentLocale,
  158. 'Accept': 'application/json',
  159. 'accessToken': global.accessToken ?? ''
  160. }.then((response) => {
  161. if (response.ok) {
  162. return response.json();
  163. } else {
  164. reject(response);
  165. }
  166. }).then(data => {
  167. resolve(data);
  168. }).catch((error) => {
  169. reject(error);
  170. })
  171. });
  172. });
  173. }
  174. export const POST = (url, params) => {
  175. return new Promise((resolve, reject) => {
  176. fetch(host + service + url, {
  177. method: 'POST',
  178. headers: {
  179. 'lang': global.currentLocale,
  180. 'Accept': 'application/json',
  181. 'content-type': 'application/json',
  182. 'accessToken': global.accessToken ?? ''
  183. },
  184. body: JSON.stringify(params)
  185. }).then((response) => {
  186. if (response.ok) {
  187. return response.json();
  188. } else {
  189. reject(response);
  190. }
  191. }).then(data => {
  192. resolve(data);
  193. }).catch((error) => {
  194. reject(error);
  195. })
  196. });
  197. }
  198. export const SOCKET = (url) => {
  199. const ws = new WebSocket(url); // like 'wss://vbea.com/path'
  200. ws.onopen = () => {
  201. // connection opened
  202. ws.send('something'); // send a message
  203. };
  204. ws.onmessage = (e) => {
  205. // a message was received
  206. console.log(e.data);
  207. };
  208. ws.onerror = (e) => {
  209. // an error occurred
  210. console.log(e.message);
  211. };
  212. ws.onclose = (e) => {
  213. // connection closed
  214. console.log(e.code, e.reason);
  215. };
  216. }
  217. export const setAccessToken = token => {
  218. global.accessToken = token;
  219. }