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.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. /* jshint esversion: 11 */
  2. import axios from 'axios';
  3. import {
  4. mergeOptions
  5. } from '@/utils/utils';
  6. const service = axios.create({
  7. // `method` 是创建请求时使用的方法
  8. method: "get", // 默认是 get
  9. // `baseURL` 将自动加在 `url` 前面,除非 `url` 是一个绝对 URL。
  10. // 它可以通过设置一个 `baseURL` 便于为 axios 实例的方法传递相对 URL
  11. baseURL: import.meta.env.VITE_APP_BASE_URL + '',
  12. //contentType: "application/x-www-form-urlencoded",
  13. // `headers` 是即将被发送的自定义请求头
  14. headers: {
  15. "X-Requested-With": "XMLHttpRequest",
  16. 'Access-Control-Allow-Origin': '*',
  17. 'Access-Control-Allow-Headers': '*'
  18. },
  19. // `params` 是即将与请求一起发送的 URL 参数
  20. // 必须是一个无格式对象(plain object)或 URLSearchParams 对象
  21. params: {
  22. },
  23. // `data` 是作为请求主体被发送的数据
  24. // 只适用于这些请求方法 "PUT", "POST", 和 "PATCH"
  25. // 在没有设置 `transformRequest` 时,必须是以下类型之一:
  26. // - string, plain object, ArrayBuffer, ArrayBufferView, URLSearchParams
  27. // - 浏览器专属:FormData, File, Blob
  28. // - Node 专属: Stream
  29. data: {
  30. },
  31. // `timeout` 指定请求超时的毫秒数(0 表示无超时时间)
  32. // 如果请求花费了超过 `timeout` 的时间,请求将被中断
  33. timeout: 1000,
  34. // `withCredentials` 表示跨域请求时是否需要使用凭证
  35. withCredentials: false, // 默认的
  36. // `auth` 表示应该使用 HTTP 基础验证,并提供凭据
  37. // 这将设置一个 `Authorization` 头,覆写掉现有的任意使用 `headers` 设置的自定义 `Authorization`头
  38. // auth: {
  39. // },
  40. // `responseType` 表示服务器响应的数据类型,可以是 "arraybuffer", "blob", "document", "json", "text", "stream"
  41. responseType: "json", // 默认的
  42. // `maxContentLength` 定义允许的响应内容的最大尺寸
  43. maxContentLength: 2000,
  44. // "proxy" 定义代理服务器的主机名称和端口
  45. // `auth` 表示 HTTP 基础验证应当用于连接代理,并提供凭据
  46. // 这将会设置一个 `Proxy-Authorization` 头,覆写掉已有的通过使用 `header` 设置的自定义 `Proxy-Authorization` 头。
  47. proxy: {
  48. host: "127.0.0.1",
  49. port: 9000,
  50. auth: {
  51. username: "mikeymike",
  52. password: "rapunz3l"
  53. }
  54. }
  55. });
  56. /**
  57. * get请求
  58. * @param url 路径
  59. * @param data 参数
  60. * @param options 实例对象
  61. * @returns
  62. */
  63. export function get(url: string, data = {}, options = {}) {
  64. const defaultOptions = {
  65. url: url,
  66. method: "get",
  67. params: data
  68. }
  69. //合并用户配置参数信息
  70. options = Object.assign(defaultOptions, options)
  71. return common(options)
  72. }
  73. /**
  74. * post 请求
  75. * @param url 路径
  76. * @param data 参数
  77. * @param options 实例对象
  78. * @returns
  79. */
  80. export function post(url: string, data = {}, options = {}) {
  81. const defaultOptions = {
  82. url: url,
  83. method: "post",
  84. params: data,
  85. }
  86. //合并用户配置参数信息
  87. options = Object.assign(defaultOptions, options);
  88. return common(options)
  89. }
  90. function common(options: any) {
  91. return new Promise((resolve, reject) => {
  92. service(options).then(function (data) {
  93. //此处编写拦截器返回处理
  94. resolve(data)
  95. }).catch(function (err) {
  96. reject(err)
  97. })
  98. })
  99. }