当前位置: 首页 > 知识库问答 >
问题:

前端 - 急!!Vue 3 Axios 请求方法丢失如何解决?

庞乐池
2023-05-18

与手上其他项目一样,axios.create的二次封装是一样的,而 API 模块从链式调用改成了单个函数导出调用。
然后,接口调用时出了问题,期望有大佬能够帮忙看看如何解决。
以下是部分代码:

// login.vue setup async
const accountFormOptions = reactive({
  username: '',
  password: '',
  client: 'admin',
  loginType: 'password',
  captcha: '',
  captchaKey: ''
});

// 传入固定的参数对象可以正常调用
const result = await useOnlineUserLogin({
  username: '',
  password: '',
  client: 'admin',
  loginType: 'password',
  captcha: '',
  captchaKey: ''
});

// 通过传入的代理数据会出现请求方法丢失及请求头丢失,然而在二次封装的 axios.ts 定义参数直接调用时又能正常使用,这里是和上述代码同一文件
await useOnlineUserLogin(accountFormOptions);

image.png
image.png

// iam.online.ts
import axios from './axios'

export const useOnlineUserLogin = (data: IAMBuiltInModule.User.Online.Login, options?: AxiosRequestConfig) => {
  return axios.post<any, FetchResponse>(
    "/iam/token/login",
    data,
    options
  )
}
// axios.ts
import axios from 'axios'

const instance = axios.create({ baseURL: '...', timeout: 30 * 1000 });
instance.interceptors.request.use(config => {
    config.headers = config.headers ?? {};
    config.headers.Authorization = 'dev';
    return config;
});

export default instance;

提供项目接口目录:

| service
| -- api
| -- -- iam.online.ts
| -- typings
| -- axios.ts

共有3个答案

乜承嗣
2023-05-18
import { reactive, toRaw } from 'vue';

// login.vue setup async
const accountFormOptions = reactive({
  username: '',
  password: '',
  client: 'admin',
  loginType: 'password',
  captcha: '',
  captchaKey: ''
});

await useOnlineUserLogin(toRaw(accountFormOptions));
何星鹏
2023-05-18

应该是reactive的问题你需要用toRefs把该响应式对象结构成普通对象进行传值

颜森
2023-05-18

谢谢 @a2774206 @乔治 的回答。
经过代码检测后,发现不是我写的有问题,而是公司防火墙对弱密码进行了拦截,因此第二次请求才会一直超时,这一点是我没了解到的。
至于为什么传入固定参数可以通过是因为值为空。

 类似资料:
  • 鸿蒙arkts 请求失败了 mock 请求地址:https://dummyjson.com/quotes axios 发起请求 官网Http库

  • 问题内容: 我正在编辑搜索表单,并尝试防止数据库中的特殊字符。在JSP搜索表单中,(多重选择)下拉列表允许用户选择将在查询中使用的描述(注意:description是字符串列表): 提交表单时,页面会动态生成URL,该URL在URL中使用查询参数(丑陋,我知道,双手被绑住了)。这是描述段的摘要。 我在数据库中有一个测试条目,其描述是: AAA`〜!@#$%^&*()_ +-= {} | [] \:

  • 我对Docker很陌生,尝试用普通html构建Docker图像,但我有一条错误消息,说用前端dockerfile解决问题失败。v0:无法读取dockerfile:open/var/lib/docker/tmp/buildkit-mount602954594/dockerfile:没有这样的文件或目录 我的文件夹目录如下 在Dockerfile里面,我有 我做了我的命令docker构建。在目录C:\

  • 本文向大家介绍React中this丢失的四种解决方法,包括了React中this丢失的四种解决方法的使用技巧和注意事项,需要的朋友参考一下 发现问题 我们在给一个dom元素绑定方法的时候,例如: React组件中不能获取refs的值,页面报错提示:Uncaught TypeError: Cannot read property 'refs' of null or undefind 小栗子 Reac

  • MissingMethodInvocationException:when()需要一个必须是“mock上的方法调用”的参数。例如:when(mock.getarticles()).ThenReturn(articles); 此外,出现此错误的原因可能是:1。您使用final/private/equals()/hashCode()方法中的任一个作为存根。这些方法不能被截取/验证。2.内部when()

  • 关于网站从后端获取新的notification(通知),我在想可以有以下几种业务逻辑: 如果实时性非常高,类似于Bilibili那种,肯定要firebase那种实时数据库+钩子 如果实时性不高,可以每次页面跳转的时候,请求一下 GET /notification来获取 或者可以在 src/index.js开启一个计时器,然后每多少分钟请求一次。 假如我现在做一个后台管理系统,我选用那种方式获取no