首页 > 其他分享 >nuxt3:http请求时需要注意得一些地方

nuxt3:http请求时需要注意得一些地方

时间:2024-01-23 20:33:51浏览次数:27  
标签:http 请求 nuxt3 watch 获取数据 useFetch data 客户端

前言

nuxt3 中获取后端数据总共有三个方法:

  1. useFetch()
  2. $fetch()
  3. useAsynData()

本篇教程就针对这三个方法的使用注意事项做一个记录

正文

  1. 通过useFetch()方法请求这个动作,在首次加载时,只在服务端执行一次,客户端是不执行得,客户端是直接使用拿到的数据地;
  2. 如果和SEO无关得数据,优先使用 $fetch() 函数获取数据
  3. useFetch() 方法可以配置仅在客户端执行请求,只需要给请求的配置参数中添加 server:false即可
const {data} = await useFetch('/api', {server:false})
  1. 【重要】如果通过useFetch() 获取数据时,服务端和客户端两端传递得参数必须相同,如果不相同,客户端会再次获取数据(相当于是二次请求)
  2. 参数不相同情况举例:比如请求时,需要传递一个客户端本地存储的用户ID,这时候,服务端在发送请求时,因为在node环境中,拿不到 localstroge 相关得数据,但是到客户端时,又能拿到数据了,这时候,客户端就会再次异步去请求一次api
  3. 客户端再次异步请求数据时,第一时间是拿不到返回的data的,这时候可以通过 watch 函数去监听data变化,然后在watch的回调函数中获取数据。
  4. 上面这种情况针对 useFetch 仅在客户端执行 同样重要,因为仅在客户端执行的useFetch()也有同样的问题,既如果参数变化,必须通过 watch 来获取数据
  const storeUser = useStoreUser(); // 这个是pinia 中存储变量,pinia 数据做了持久化存储,都保存到了localStroge 中
  const lUserId = storeUser.getUserId();

  const { data } = await http.get('/shop/user/get', {
      params: { userId: lUserId },
      server: false
  });
  // 这里如果直接拿data会返回null,必须通过 watch 监听才能拿到数据
  watch(data, n => {
      if (unref(n).code === 10000) {
          storeUser.setUserId(unref(n).result.id + '');
          storeUser.userSD = unref(n).result.sd;
      }
  });

标签:http,请求,nuxt3,watch,获取数据,useFetch,data,客户端
From: https://www.cnblogs.com/shuiche/p/17983368

相关文章

  • 如何查找SpringBoot应用中的请求路径(不使用idea)
    背景昨天有个同事向我咨询某个接口的物理表是哪个,由于公司业务较多、这块业务的确不是我负责的,也没有使用idea不能全局搜索(eclipse搜不到jar内的字符串),也就回复了不清楚。除了自己写代码输出servlet的路径和类外,发现了一个我之前没用过的方法:SpringBootActuator,分享给大家。......
  • 这一次,弄明白JS中的文件相关(二):HTTP请求头和响应头
    (一)前置知识开始前,我们先来复习一下HTTP的基础知识。HTTP请求分为:请求行、请求头、空行、请求体(也叫正文、请求实体、请求主体)。HTTP响应分为:状态行(也叫响应行)、响应头、空行、响应体(也叫正文、响应实体、响应主体)。在HTTP请求中,最常见的GET请求是没有请求体的(GET的查询字符串......
  • 前端打包后上传至服务器,发现css样式都未生效,查看请求preview预览格式不正确问题解决
    参考:https://blog.csdn.net/wzj_110/article/details/112850811 我的问题前端打包后上传至服务器,发现css样式都未生效,查看css请求,发现preview预览格式不正确,Response-Headers里的Content-type未对应 原因服务器的nginx配置中, mime.types文件缺失。 原理 MIME:Multip......
  • 安防视频监控EasyCVR平台HTTP-FMP4播放协议在分屏播放时的性能优化
    安防视频监控EasyCVR平台兼容性强,可支持的接入协议众多,包括国标GB28181、RTSP/Onvif、RTMP,以及厂家的私有协议与SDK,如:海康ehome、海康sdk、大华sdk、宇视sdk、华为sdk、萤石云sdk、乐橙sdk等。平台能将接入的视频流进行汇聚、转码与多格式分发,具体包括:RTMP、RTSP、HTTP-FLV、WebSo......
  • 安防视频监控EasyCVR平台HTTP-FMP4播放协议在分屏播放时的性能优化
    安防视频监控EasyCVR平台能将接入的视频流进行汇聚、转码与多格式分发,具体包括:RTMP、RTSP、HTTP-FLV、WebSocket-FLV、HLS、WebRTC、fmp4等。近期我们在视频监控管理平台EasyCVR系统中新增了HTTP-FMP4播放协议,有用户反馈使用FMP4协议在分屏播放时第一路出现播放不了的情况。测试发......
  • requests模块和网站的请求(get、post请求)
    get请求,传参数paramsresponse=requests.get(url,headers=headers,params=params)importrequests#s最后有没有问号结果都一样url='https://www.baidu.com/s?'#请求头是一个字典headers={'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)App......
  • .NET Framework 4 请求https接口
    usingSystem;usingSystem.Collections.Generic;usingSystem.IO;usingSystem.Linq;usingSystem.Net;usingSystem.Text;usingSystem.Web;usingNewtonsoft.Json;namespaceTest.A{publicstaticclassHttpHelper{publicstaticTPostHttp......
  • OkHTTP发送POST请求传送JSON数据
    导入依赖<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency>......
  • 浏览器http自动跳转https解决方法
    在某个浏览器用https登录过之后,浏览器会自动改为https访问,导致测试环境进不去,需要删除hsts,不同浏览器的处理办法为:IE浏览器1.地址栏中输入edge://net-internals/#hsts2.在Deletedomain中输入项目的域名,并Delete(删除)3.可以在Querydomain测试是否删除成功。Chrome浏览器1.地......
  • HttpRetryException: cannot retry due to redirection, in streaming mode
     failcannotretryduetoredirection,instreamingmodeexecutingPOSThttps://vsp.allinpay.com/apiweb/gateway/payfeign.RetryableException:cannotretryduetoredirection,instreamingmodeexecutingPOSThttps://vsp.allinpay.com/apiweb/gateway/pay......