8-1的一点问题

来源:8-1 登录第一部分 获取token

Guguuuu

2022-07-28

图片描述
一、如图。。。
老师您帮我看看我的代码,8-1的逻辑我全部过了一遍,发现没问题。
https://github.com/Guguuuu/zhihu.git

二、还有昨天那个疑问我也还未弄懂。这节遇到一个类似的
图片描述
这里通过解构赋值拿到请求中的data。
然后我们通过commit把data传到对应的方法
图片描述
rawdata参数接收了刚刚传的data,那么这里写rawData.data 我认为就已经等于data.data了
而接口文档中,如下图
图片描述
这个通过解构赋值拿到的data中,并没有又一层的data结构,里面只有token,,,,,,


老师我不知道怎么在回答中传入图片,我在这里传

图片描述
请问是这样理解吗

写回答

1回答

张轩

2022-07-28

同学你好

第一个问题,请看 7-5 小节,有非常详细的解决方案:http://coding.imooc.com/lesson/449.html#mid=39379

原因就是 Post/Patch 这种请求,需要在 body 中传递 icode,不能仅仅在 URL 上传递,要不会拿不到。假如你去看你 Login 的请求,就会发现它报错为 icode 为空。

第二个问题:我在这里合并回答一下,另外一个问题我就不回复了。

原因就是 axios 在返回的时候又封装了一层,也就是说它多加了一层结构,不是直接返回的 data。如果你去看 axios 的定义就会发现 axios 返回的是这么个数据结构

export interface AxiosResponse<T = any, D = any>  {
    data: T;
    status: number;
    statusText: string;
    headers: AxiosResponseHeaders;
    config: AxiosRequestConfig<D>;
    request?: any;
}

上面的 data 才是最后数据的返回,还能获取其他的一系列属性。

所以我们写的时候要多写一层,比如 

const resp = await axios.post(...)
resp.data 才是到我们的返回的数据
所以 resp.data.data.token 才能拿到最终的数据


1
1
Guguuuu
谢谢老师!
2022-07-28
共1条回复

Vue3 + TS 仿知乎专栏企业级项目

带你完成前后端分离复杂项目,率先掌握 vue3 造轮子技能

3142 学习 · 2313 问题

查看课程