当前位置: 首页 > article >正文

axios请求设置request umijopenai生产前端请求 ts状态全局 v-if v-else 与动态js变量

axios请求

安装

npm install axios

全局自定义请求

集中处理设置 集体通用请求

example

const instance = axios.create({
  baseURL: 'https://some-domain.com/api/',
  timeout: 1000,
  headers: {'X-Custom-Header': 'foobar'}
});

请求前

请求后

拦截器

// 添加请求拦截器
axios.interceptors.request.use(function (config) {
    // 在发送请求之前做些什么
    return config;
  }, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  });

// 添加响应拦截器
axios.interceptors.response.use(function (response) {
    // 2xx 范围内的状态码都会触发该函数。
    // 对响应数据做点什么
    return response;
  }, function (error) {
    // 超出 2xx 范围的状态码都会触发该函数。
    // 对响应错误做点什么
    return Promise.reject(error);
  });

前后端交互

@umijs/openai插件

可以由后端kf4j文档 自动生成前端代码

npm i --save-dev @umijs/openapi

在根目录添加配置文件

import { generateService } from '@umijs/openapi'

generateService({
  requestLibPath: "import request from '@/request'",
  schemaPath: 'http://localhost:8123/api/v2/api-docs',
  serversPath: './src',
})

pack.json设置

//  what;
//  自己添加openapi服务 设置要执行哪些代码
//    使用 node 运行openapi.config.js js文件
    "openapi": "node openapi.config.js",

bug1 后端未启动

fetch openapi error: FetchError: request to http://localhost:8123/api/v2/api-docs failed, reason: 
    at ClientRequest.<anonymous> (D:\project\pioneak-picture-frontend\node_modules\node-fetch\lib\index.js:1501:11)

bug2 axios基础网址设置错误

const myAxios = axios.create({
  baseURL: 'http://localhost:8123',
  timeout: 60000,
  withCredentials: true,
});

全局状态管理

某一个信息多个页面共享数据

Pinia更新与共享

import { defineStore } from "pinia";
import { ref } from "vue";

export const useLoginUserStore = defineStore("loginUser", () => {
  const loginUser = ref<any>({
    userName: "未登录",
  });

  async function fetchLoginUser() {
    // todo 由于后端还没提供接口,暂时注释
    // const res = await getCurrentUser();
    // if (res.data.code === 0 && res.data.data) {
    //   loginUser.value = res.data.data;
    // }


    /*
    what:
      测试用户登录
      loginUser常量 设置对象内容 3s后设置
      app.vue 中 使用 LoginUserStore.fetchLoginUser() 设置loginUser value 在vue动态响应 <div v-if="loginUserStore.loginUser.id">判断到了id
     */
    setTimeout(() =>{
      loginUser.value = {userName: "测试用户", id: 1}
    },3000)
  }

  function setLoginUser(newLoginUser: any) {
    loginUser.value = newLoginUser;
  }

  return { loginUser, setLoginUser, fetchLoginUser };
});

使用状态全局

const LoginUserStore = useLoginUserStore()
LoginUserStore.fetchLoginUser()

在组件中使用状态全局对象与对象信息

<div v-if="loginUserStore.loginUser.id">

            {{loginUserStore.loginUser.userName ?? '无名'}}
          </div>
          <div v-else>
            <a-button type="primary" href="/user/login">登录</a-button>
          </div>
const loginUserStore = useLoginUserStore()

http://www.kler.cn/a/567932.html

相关文章:

  • C++特殊类的设计
  • 23种设计模式之《策略模式(Strategy)》在c#中的应用及理解
  • git上传仓库操作
  • Python核心:Django配置swagger的详细步骤和代码举例
  • 解锁状态模式:Java 编程中的行为魔法
  • js判断字符在不在数组里面的5种方式
  • tableau之雷达图和凹凸图
  • Rohm发布TOLL封装650V GaN HEMT,引领汽车用GaN器件大规模生产新浪潮
  • SOC-ATF 安全启动BL2流程分析(2)
  • Linux 服务器运维常用命令大全
  • 夜天之书 #106 Apache 软件基金会如何投票选举?
  • Redis和MySQL的实时数据同步方案
  • 后台数据报表导出数据量过大问题
  • 嵌入式轻量化SDK设计,EasyRTC音视频通话SDK压缩至500K-800K
  • 云和恩墨亮相PolarDB开发者大会,与阿里云深化数据库服务合作
  • 视频推拉流EasyDSS点播平台云端录像播放异常问题的排查与解决
  • 9. 【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--微服务基础工具与技术--Ocelot 网关--请求聚合
  • leetcode 73. 矩阵置零
  • 【数据结构】从位图到布隆过滤器
  • 新时代,科技助力运动旅游开启新潮流