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

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

时间:2024-01-28 20:32:52浏览次数:30  
标签: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://blog.51cto.com/u_10624715/9454134

相关文章

  • tornado 整合字符串与请求体
    为了方便,字符串和请求提可以整合为一个方法,即get_argument(name.default=x,strip=true)self.finish()方法的调用应该只接受一个参数,表示要发送给客户端的响应。如果你想发送多个参数,使用self.write()方法importtornado.ioloopimporttornado.webclassMainHandler(torna......
  • gRPC vs. HTTP:网络通信协议的对比
    概述gRPC和HTTP是两种常见的网络通信协议,用于在客户端和服务器之间进行通信。它们具有不同的特点和适用场景,下面对它们进行详细比较。HTTP(HypertextTransferProtocol)特点:简单易用:HTTP使用简单的请求方法和状态码来进行通信,如GET、POST、200OK、404NotFound等。它......
  • 使用 certbot 通过 Let's Encrypt 申请免费证书,部署到 nginx 中,开启 https
    使用certbot可以很方便、快捷的通过Let’sEncrypt申请免费的证书,并部署到nginx中,开启https在Linux通过命令安装安装Nginxsudoaptinstallnginx安装certbot先安装snapsudoaptinstallsnap再通过snap安装certbotsudosnapinstall--classiccertb......
  • C# 简单的 HTTP 静态文件服务 NS (Netnr.Serve)
    NS(Netnr.Serve)简单的HTTP静态文件服务SimpleHTTPstaticfileservingStart(启动)启动逐个参数设置--urls(default:http://*:713/):--root(default:D:/site):#根目录,默认命令行启动位置--index(default:index.html):--404(default:404.html):--suffix(d......
  • NodeJS Express实现所有页面Http访问重定向跳转为Https
    要在Node.jsExpress中实现所有页面从HTTP访问跳转到HTTPS,你可以使用重定向中间件。以下是一个简单的示例:首先,确保你已经安装了Express和express-redirect中间件。如果没有,你可以通过npm进行安装:npminstallexpressexpress-redirect然后,在你的主应用程序文件(例如app.js)中,引入Expr......
  • http工具类
    1packagecom.example.demo.util.httpRequest;23importcom.baomidou.mybatisplus.core.toolkit.StringUtils;4importorg.apache.http.HttpResponse;5importorg.apache.http.NameValuePair;6importorg.apache.http.client.HttpClient;7importo......
  • GET&POST请求和响应的中文乱码解决方案
    Serlvet程序的请求和响应乱码问题get请求与post请求数据乱码publicclassRequestAPIServletextendsHttpServlet{@OverrideprotectedvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOException{//获取请求......
  • HTTP和HTTPS的区别及其重要性
    先介绍一下:在互联网应用中,HTTP和HTTPS是两种常见的协议.他们在数据传输过程中有着显著的区别,尤其是在安全性方面.本文将介绍HTTP和HTTPS的区别,并强调HTTPS的重要性.以下是文章的主要内容:1.HTTP(HyperTextTransferProtocol):·HTTP是一种基于文本的协议,用于在Web浏览器......
  • 根据后端接口获取文件流下载Excel文件 分别通过GET和POST请求实现(★★★
    POST携带参数请求文件流并保存为Excel文件//payload携带的对象参数functiondownloadExcel(payload){letxhr=newXMLHttpRequest();xhr.open('POST','background/baseInfo/export',true);xhr.setRequestHeader('Content-Type','application/j......
  • 2024-01-26 yarn证书源过期 ==》 yarn切换的镜像源为https,实际上该链接的证书已过期,应
    如,我给一个项目用yarn装依赖,这时候报错:yarninstallv1.22.21infoNolockfilefound.[1/4]Resolvingpackages...errorError:certificatehasexpiredatTLSSocket.onConnectSecure(node:_tls_wrap:1539:34)atTLSSocket.emit(node:events:513:28)atTLSSocket._fin......