/* jshint esversion: 11 */ import axios from 'axios'; import { mergeOptions } from '@/utils/utils'; const service = axios.create({ // `method` 是创建请求时使用的方法 method: "get", // 默认是 get // `baseURL` 将自动加在 `url` 前面,除非 `url` 是一个绝对 URL。 // 它可以通过设置一个 `baseURL` 便于为 axios 实例的方法传递相对 URL baseURL: import.meta.env.VITE_APP_BASE_URL + '', //contentType: "application/x-www-form-urlencoded", // `headers` 是即将被发送的自定义请求头 headers: { "X-Requested-With": "XMLHttpRequest", 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Headers': '*' }, // `params` 是即将与请求一起发送的 URL 参数 // 必须是一个无格式对象(plain object)或 URLSearchParams 对象 params: { }, // `data` 是作为请求主体被发送的数据 // 只适用于这些请求方法 "PUT", "POST", 和 "PATCH" // 在没有设置 `transformRequest` 时,必须是以下类型之一: // - string, plain object, ArrayBuffer, ArrayBufferView, URLSearchParams // - 浏览器专属:FormData, File, Blob // - Node 专属: Stream data: { }, // `timeout` 指定请求超时的毫秒数(0 表示无超时时间) // 如果请求花费了超过 `timeout` 的时间,请求将被中断 timeout: 1000, // `withCredentials` 表示跨域请求时是否需要使用凭证 withCredentials: false, // 默认的 // `auth` 表示应该使用 HTTP 基础验证,并提供凭据 // 这将设置一个 `Authorization` 头,覆写掉现有的任意使用 `headers` 设置的自定义 `Authorization`头 // auth: { // }, // `responseType` 表示服务器响应的数据类型,可以是 "arraybuffer", "blob", "document", "json", "text", "stream" responseType: "json", // 默认的 // `maxContentLength` 定义允许的响应内容的最大尺寸 maxContentLength: 2000, // "proxy" 定义代理服务器的主机名称和端口 // `auth` 表示 HTTP 基础验证应当用于连接代理,并提供凭据 // 这将会设置一个 `Proxy-Authorization` 头,覆写掉已有的通过使用 `header` 设置的自定义 `Proxy-Authorization` 头。 proxy: { host: "127.0.0.1", port: 9000, auth: { username: "mikeymike", password: "rapunz3l" } } }); /** * get请求 * @param url 路径 * @param data 参数 * @param options 实例对象 * @returns */ export function get(url: string, data = {}, options = {}) { const defaultOptions = { url: url, method: "get", params: data } //合并用户配置参数信息 options = Object.assign(defaultOptions, options) return common(options) } /** * post 请求 * @param url 路径 * @param data 参数 * @param options 实例对象 * @returns */ export function post(url: string, data = {}, options = {}) { const defaultOptions = { url: url, method: "post", params: data, } //合并用户配置参数信息 options = Object.assign(defaultOptions, options); return common(options) } function common(options: any) { return new Promise((resolve, reject) => { service(options).then(function (data) { //此处编写拦截器返回处理 resolve(data) }).catch(function (err) { reject(err) }) }) }