react 实现自动创建api 请求文件

ops/2024/9/25 4:33:38/

需求:

  • 前后端分离的情况下前端要调用后端的接口要写很多接口调用的定义文件很繁琐,切没有意义都是体力劳动

进程:

  • 让后端使用swagger 或者其他的openpai 格式的组件将server 端的接口喷出
  • 如果是swagger 的话一般会有一个口子 /v2/api-docs
  • 前端是react 使用 @umijs/openapi当然如果用了umi 的框架的话可以使用@umijs/plugin-openapi
  • 安装对应的组件yarn add ts-node @umijs/openapi -D
  • 但是如果node 的版本比较低的话这个安装可能会失败 error commander@12.0.0: The engine “node” is incompatible with this module. Expected version “>=18”. Got “16.15.0”
  • 因为openapi 依赖了commander 但是没有指定他的版本号然后安装commander 的时候会发现最新版本需要的node 的版本和本地的版本不一样,或者说不够高
  • 最简单的解决方案当然是升级node 的版本,但是升级node 版本的时候可能会导致其他的组件失效,所以我们需要在package.json 里面对这个组件指定一个版本
//与 devDependencies 同级
"resolutions": {"@umijs/openapi/**/commander": "10.0.1"}
  • 这个行为指定了openapi 下的 commander 依赖都使用10.0.1 版本,如果需要其他版本可以自行去github 查看
  • 安装成功之后在 package.json 里配置命令 "openapi": "ts-node openapi.config.ts"
  • 配置openapi.config.ts
const { generateService } = require('@umijs/openapi')generateService({schemaPath: 'http://***/v2/api-docs',//上面提到的swagger 的地址serversPath: './servers',//生成api 存放路径
})
  • 运行 yarn openapi之后发现生成的api用的是import { request } from 'umi'但我们并没有使用umi 的框架怎么办
  • openapi.config.ts 里添加一个参数
const { generateService } = require('@umijs/openapi')generateService({requestLibPath: "import request from \"umi-request\"",//替换requst 的导入信息,推荐用umi-requestschemaPath: 'http://***/v2/api-docs',//上面提到的swagger 的地址serversPath: './servers',//生成api 存放路径
})
  • 安装yarn add umi-request

拓展:

  • commander github 地址
  • openapi github 地址

http://www.ppmy.cn/ops/16390.html

相关文章

leetcode 53 最大子数组和

给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组 是数组中的一个连续部分。 示例 1: 输入:nums [-2,1,-3,4,-1,2,1,-5,4] 输出&#xff1…

对2023年图灵奖揭晓看法

2023年图灵奖揭晓,你怎么看? 2023年图灵奖,最近刚刚颁给普林斯顿数学教授 Avi Wigderson!作为理论计算机科学领域的领军人物,他对于理解计算中的随机性和伪随机性的作用,作出了开创性贡献。这些贡献不仅推…

车企如何利用数据技术,指导汽车全生命周期的业务运营?

引言:数据正作为重点,为行业提供不可或缺的指导 《汽车数据发展研究报告(2023)》指出,汽车行业正由传统硬件制造向“电动化、智能化、网联化”方向转变。德勤预测,到 2025 年,汽车行业 20%的利…

深入理解Spring Boot钩子函数

在软件开发中,Spring Boot已经成为了构建Java应用程序的首选框架之一。它简化了应用程序的开发过程,并提供了丰富的功能和扩展性。 Spring Boot的钩子函数(Hook Functions)是其核心特性之一,能够在应用程序的生命周期…

八、Python+FFmpeg,实战直播推流

1,环境变量 将 python.exe 的路径添加到环境变量中。 2,创建 py 文件,调用 ffmpeg import subprocess import time #ffmpeg 录屏:5 秒 ffmpeger=subprocess.Popen(ffmpeg -thread_queue_size 16 -f gdigrab -i desktop -s 1280x720 -vcodec libx264 -y test2.mp4, she…

MyBatis源码之MyBatis中SQL语句执行过程

MyBatis源码之MyBatis中SQL语句执行过程 SQL执行入口 我们在使用MyBatis编程时有两种方式&#xff1a; 方式一代码如下&#xff1a; SqlSession sqlSession sqlSessionFactory.openSession(); List<Student> studentList sqlSession.selectList("com.sjdwz.da…

数据挖掘实验一

一、实验环境及背景 使用软件&#xff1a; Anaconda3 Jupyter Notebook 实验内容&#xff1a; 1.使用Tushare或者其他手段获取任意两支股票近三个月的交易数据。做出收盘价的变动图像。2.使用Pandas_datareader获取世界银行数据库中美国&#xff08;USA&#xff09;、瑞典&…

Vuforia AR篇(三)— AR模型出场效果

目录 前言一、AR模型出场二、AR出场特效三、添加过渡效果四、效果 前言 例如&#xff1a;随着人工智能的不断发展&#xff0c;机器学习这门技术也越来越重要&#xff0c;很多人都开启了学习机器学习&#xff0c;本文就介绍了机器学习的基础内容。 一、AR模型出场 创建ARCamer…