Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

index.ts 3.4KB

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