首页
学习
活动
专区
圈层
工具
发布

await axios竟然返回undefined?(已解决)

现象 昨天写vue的时候,使用await axios 竟然返回了undefined?...//1.组件挂载就开始请求后端api const res = await getCourseListAPI() //2.getCourseListAPI()方法 export async function...追踪到getCourseListAPI()内部,发现内容的res也是undefined 但在f12的控制台的网络面板中发现数据是成功的获取到了的,说明数据在中间丢失了 axios的请求是,先由axios...实例发出,请求拦截器拦截,响应拦截器拦截,返回到axios实例 深入到响应拦截器中,逐个探查 response => { return response.data; }, 在这里,发现response.data...不是一个响应对象,response才是正确的响应对象,响应拦截器将一个非响应对象返回给axios实例,await解析出来就是undefined 解决方案 将 return response.data 修改为

2.9K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【架构师(第二十九篇)】Vue-Test-Utils 触发事件和异步请求

    ---- 知识点 将 mock 对象断言为特定类型 使用 jest.Mocked 使用 it.only 来指定测试的 case 使用 skip 跳过指定测试的 case 测试内容 触发事件...trigger 方法 测试界面是否更新 特别注意 DOM 更新是个异步的过程 使用 async await 更新表单 setValue 方法 验证事件是否发送 emitted 方法 测试异步请求 模拟第三方库实现...any, loading: false, error: false }) // 异步请求 const loadUser = () => { user.loading = true axios.get...import axios from 'axios'; import flushPromises from 'flush-promises'; import type { VueWrapper } from...'); //将 mock 对象断言为特定类型 使用 jest.Mocked const mockAxios = axios as jest.Mockedaxios>; const

    1K10

    为什么 HTTP GET 方法不使用请求体?

    本指南将揭示为什么 HTTP GET 方法不像其他 HTTP 方法那样使用请求体,以及如何在 API 开发中有效地使用 GET 请求。...当谈到 HTTP(超文本传输协议)时,您可能会好奇为什么 GET 方法通常不涉及请求体。在 Web 请求中,发送数据到请求体是很常见的,用来向服务器传递信息。...然而,作为 HTTP 操作的基石,GET 方法却偏离了这一常规。本指南将深入探讨为什么 HTTP GET 请求通常不使用请求体,GET 方法的主要用途,以及如何有效地发送 GET 请求。...将请求体附加到 GET 请求上违背了 GET 用于安全检索数据而不修改服务器资源的原则。为什么 HTTP GET 请求不使用请求体?为什么 GET 方法不使用请求体呢?...无论您是经验丰富的开发人员,还是初学者,掌握 HTTP GET 请求的细节将增强您的 API 开发技能,从而构建出更可靠、更高效的应用程序。那么,为什么还等呢?

    31510

    为什么要禁止除GET和POST之外的HTTP方法?

    因此,有必要说明一下,为什么要禁止除GET和POST之外的HTTP方法。 换句话说,对于这些HTTP不安全方法,到底有多不安全呢?...二、举例说明不安全的HTTP方法 众所周知,GET、POST是最为常见方法,而且大部分主流网站只支持这两种方法,因为它们已能满足功能需求。...其中,GET方法主要用来获取服务器上的资源,而POST方法是用来向服务器特定URL的资源提交数据。...写到这里,也许大家都明白了,为什么要禁止除GET和POST外的HTTP方法,一是因为GET、POST已能满足功能需求,二是因为不禁止的话威胁影响大。...许多时候,即使OPTIONS请求返回的响应中没有列出某个方法,但该方法仍然可用。总的来说,建议手动测试每一个方法,确认其是否可用。

    2.3K60

    搞明白axios 源码,探究配置、拦截器、适配器等核心功能具体的执行过程(二)

    以及为什么可以即可以当成方法调用还可以通过对象的调用方式调用某些属性方法 如果没有了解的同学可以先去看一下上一篇文章的介绍,再来继续往下看。...优先级依次是:某个具体请求配置 > 创建实例对象配置 > axios 默认配置 03 请求过程 上节说过,axios可以像对象那样调用属性方法,如 get、post等,其实最终都会调用 request...方法,代码如下: utils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {...也就是说我们执行的每个请求都是执行了一个链,最终返回了一个 promise对象,是不是感觉也没有那么神秘,看一下执行代码,很简单 var promise = Promise.resolve(config.../adapters/http'); } return adapter; } 看到这里应该大体的有点明白了吧,其实就是我们平时用的 XMLHttpRequest 对象,那为什么还要做一个适配器呢,

    1.3K10

    前端架构带你 封装axios,一次封装终身受益!

    这其中可以归为两类, 一类是 针对单独接口的处理 二类是 针对所有接口需要的内容 针对单独接口的处理 请求前的参数处理 请求后的返回值处理 针对所有接口的处理 Post Get Put Del 拦截器...针对所有接口的处理(Get) 我们希望以 const [e, r] = await api.getUserInfo(id) 的方式调用,代表着我们需要保证返回值稳定的返回 [err, result] ,...: Fn): Promise | undefined]> => new Promise((resolve) => { axios .get...但是我们还有一些额外的操作无处存放(参数处理、返回值处理),且我们并不想将他们耦合在页面中每次调用进行处理,那么我们显然需要一个位置来处理这些内容。 import { Get } from ".....: Fn): Promise | undefined]> => new Promise((resolve) => { axios .get

    5.6K21

    Web安全|为什么要禁止除GET和POST之外的HTTP方法?

    因此,有必要说明一下,为什么要禁止除GET和POST之外的HTTP方法。 换句话说,对于这些HTTP不安全方法,到底有多不安全呢?...二、举例说明不安全的HTTP方法 众所周知,GET、POST是最为常见方法,而且大部分主流网站只支持这两种方法,因为它们已能满足功能需求。...其中,GET方法主要用来获取服务器上的资源,而POST方法是用来向服务器特定URL的资源提交数据。...写到这里,也许大家都明白了,为什么要禁止除GET和POST外的HTTP方法,一是因为GET、POST已能满足功能需求,二是因为不禁止的话威胁影响大。...许多时候,即使OPTIONS请求返回的响应中没有列出某个方法,但该方法仍然可用。总的来说,建议手动测试每一个方法,确认其是否可用。

    5.8K21

    除了Jest,还有哪些工具可用于Mock外部依赖?

    // 创建 fetch 的 stub fetchStub = sinon.stub(global, 'fetch'); }); afterEach(() => { // 恢复原始方法...优势: 与请求方式无关(支持 fetch、axios 等) 模拟逻辑与测试代码分离,可复用 更接近真实请求环境,适合集成测试 示例:模拟 API 服务// mocks/handlers.jsimport...{ rest } from 'msw';// 定义请求处理逻辑export const handlers = [ rest.get('/api/data', (req, res, ctx) => {...核心功能: td.function():创建模拟函数 td.when():定义函数调用的条件和返回值 td.verify():验证函数调用 示例:模拟工具函数import td from 'testdouble...test('mocks HTTP request with nock', async () => { // 拦截并模拟请求 nock('https://api.example.com') .get

    13210

    Axios 源码解析-完整篇

    axios.get…) request 方法是入口,axios/axios.get 等调用都会走进 request 进行处理 请求拦截器 请求数据转换器,对传入的参数 data 和 header 做数据处理...= bind(Axios.prototype.request, context); // Axios.prototype 上的方法 (get/post...)挂载到新的实例 instance 上...; } 从上面代码可以看得出,Axios 不是简单的创建实例 context,而且进行一系列的上下文绑定和属性方法挂载,从而去支持 axios(),也支持 axios.get() 等等用法; createInstance...方法明明可以写一行代码 return new Axios() 即可,为什么大费周章使用 request 方法绑定新实例,其实就只是为了支持 axios() 写法,开发者可以写少几行代码。。。...,调用 source 方法返回 {token, cancel},调用函数 cancel 可取消请求,但 axios 内部怎么知道取消请求,只能通过 { cancelToken: token } ,那 token

    1.4K30

    一比一还原axios源码(五)—— 拦截器

    use方法,该方法目前有两个参数,分别对应着Promise中的resolve和reject。   ...: "/c5/get", method: "get", headers: { test: "", }, }).then((res) => { console.log(res.data...然后呢,我们在它的原型上挂载一个use方法,这个前面说过了,就是要把具体的拦截器放置到容器内,以待最后的使用,其中放置的是一个包含了resolve和reject函数以及两个参数的对象,这个方法返回了一个对应拦截器在容器内的下标作为...再然后呢,就是一个eject方法,使用use方法中返回的下标,直接设置为null即可,提问!为啥这里不直接移除(splice啥的)容器内的拦截器,而是把对应位置的拦截器设置为null呢?   ...,返回promise,包括后面的responseInterceptorChain也是promise,因为最后要抛出promise供axios实例使用。

    85720
    领券