You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

58 lines
1.4 KiB

4 months ago
4 months ago
3 months ago
4 months ago
4 months ago
3 months ago
4 months ago
4 months ago
  1. import axios from 'axios'
  2. // 创建axios实例
  3. const service = axios.create({
  4. baseURL: import.meta.env.VITE_API_BASE,//.env.development
  5. timeout: 1000000,
  6. headers: {
  7. 'Content-Type': 'application/json'
  8. },
  9. // 设置请求头,指定请求体的格式为 JSON
  10. // 设置默认请求方法为 POST 这行对应的代码搁哪呢? util/http.js
  11. })
  12. // 添加上传方法
  13. export const uploadFile = (file) => {
  14. const formData = new FormData();
  15. formData.append('file', file);
  16. return service.post(import.meta.env.VITE_UPLOAD_URL, formData, {
  17. headers: {
  18. 'Content-Type': 'multipart/form-data'
  19. }
  20. });
  21. };
  22. // 请求拦截器
  23. service.interceptors.request.use(config => {
  24. const token = localStorage.getItem('token')
  25. if (token) {
  26. if (config.data) {
  27. config.data.token = token;
  28. } else {
  29. config.data = { token };
  30. }
  31. config.headers.token = `${token}`
  32. }
  33. return config
  34. }, error => {
  35. return Promise.reject(error)
  36. })
  37. // 响应拦截器
  38. service.interceptors.response.use(
  39. response => {
  40. return response
  41. },
  42. error => {
  43. const { response } = error
  44. if (response && response.status === 401) {
  45. const machineId = localStorage.getItem('machineId')
  46. localStorage.removeItem('token')
  47. window.location.href = `#/login?machineId=${machineId}`
  48. return Promise.resolve({ needsLogin: true })
  49. }
  50. return Promise.reject(error)
  51. }
  52. )
  53. export default service