httpModel.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. import axios from "axios";
  2. import qs from "qs";
  3. import { AsyncStorage } from "react-native";
  4. export default {
  5. state: {
  6. baseUrl: "http://192.168.50.91:8080",
  7. token: "",
  8. config: {},
  9. },
  10. actions: ({ model, setState }) => ({
  11. getAxiosInstance() {
  12. const {
  13. baseUrl,
  14. setConfig,
  15. setConfigError,
  16. successEvent,
  17. errorEvent,
  18. } = model();
  19. const axiosInstance = axios.create({
  20. baseURL: baseUrl,
  21. });
  22. axiosInstance.interceptors.request.use(
  23. (config) => setConfig(config),
  24. (error) => setConfigError(error)
  25. );
  26. axiosInstance.interceptors.response.use(
  27. (response) => successEvent(response),
  28. (error) => errorEvent(error)
  29. );
  30. return axiosInstance;
  31. },
  32. async setConfig(config) {
  33. config.headers = config.headers || {};
  34. let token = await AsyncStorage.getItem("token");
  35. console.log(token);
  36. if (token) {
  37. config.headers["Authorization"] = "Bearer " + token;
  38. }
  39. return config;
  40. },
  41. setConfigError(error) {
  42. return Promise.reject(error);
  43. },
  44. successEvent(response) {
  45. console.log(response);
  46. return response;
  47. },
  48. errorEvent(error) {
  49. console.log(error.response);
  50. if (error.response.status) {
  51. error.response.data.status = error.response.status;
  52. }
  53. return Promise.reject(error.response.data);
  54. },
  55. httpGet(url, params) {
  56. const { getAxiosInstance } = model();
  57. const { warnning } = model("loadingModel");
  58. params = params || {};
  59. return new Promise((resolve, reject) => {
  60. getAxiosInstance()
  61. .get(url, {
  62. params: params,
  63. })
  64. .then((res) => {
  65. resolve(res.data);
  66. })
  67. .catch((e) => {
  68. reject(e);
  69. });
  70. });
  71. },
  72. httpPost(url, body, options) {
  73. const { getAxiosInstance } = model();
  74. options = options || {};
  75. body = body || {};
  76. if (!(body instanceof FormData)) {
  77. if (options.body !== "json") {
  78. body = qs.stringify(body);
  79. }
  80. }
  81. return new Promise((resolve, reject) => {
  82. getAxiosInstance()
  83. .post(url, body, { withCredentials: true })
  84. .then((res) => {
  85. resolve(res.data);
  86. })
  87. .catch((e) => {
  88. reject(e);
  89. });
  90. });
  91. },
  92. addAsyncStorage(key, value) {
  93. console.log(value);
  94. return AsyncStorage.setItem(key, value);
  95. },
  96. removeAsyncStorage(key) {
  97. AsyncStorage.removeItem(key);
  98. },
  99. getAsyncStorage(key) {
  100. return AsyncStorage.getItem(key);
  101. },
  102. }),
  103. };