vue3+ts实战开发之swagger自动生成(一)

前几个月,小编的团队准备开始技术尝新,决定使用vue3+vite+ts来进行项目开发,今天讲述的便是一个其中一个核心重点-api的interface定义。

一.接口该怎么管理?

之前我们聊过,关于接口,在我这里更偏向于统一管理,接口层能够统一的进行声明,还没看过的同学可以挪步前端项目的接口管理方案,但是尽可能是自动化的,而不是前端同学对着文档一个一个手动接入的,那么js开发的项目还好说,在我们以往的项目中只需要定义urlmethod请求方式就可以了,但是ts中,需要声明的接口请求类型和接口响应参数那么多,我们又该如何处理。

二.ts中,接口这么多怎么更友好的进行请求响应参数的类型声明?
  1. 核心思想
    通常的我们对应的后端都会有一套api文档,今天的文章主要就是以swagger为例进行讲解swagger能在接口文档上完整的显示出请求url、请求method、请求头header、requrest参数、response响应结果,那么,必然我们就能通过这些信息生成一个我们需要的请求文件。

  2. 版本管控
    整体将采用npm的管控方式
    优先建议集成到后端服务中,即后端发布文档即更新文件,我们这里是写了一个前端cmd命令手动控制的脚本。

swagger git本地code npm 根据swagger.json生成ts请求代码 自动更新版本,生成代码,进行发布 更新命令,发起swagger.json请求 swagger git本地code npm

npm仓库
然后对应的项目安装对应的版本依赖即可拿到对应的代码

  1. git本地code到底应该生成哪些内容
    首先对这块进行设计考虑时,一般是3个因素:
  • 一个是请求参数和响应参数的类型interface接口定义
  • 另外一个就是生成对应的请求ts文件
  • 不同服务之间的拦截如何进行统一处理
  1. 生成的目录说明
├── user-api            // API服务
│   ├── swagger-api		//生成的api内容集合
│   │   └── index.ts
│   ├── swagger-utils   //生成的类型声明集合
│   │   └── index.ts
│   ├── main.ts //入口文件
  1. 生成的文件展示
// filePath: user-api/swagger-api/index.ts

import * as types from './../swagger-utils/index'
import { HttpRequest } from './../main'  

type integer = number  


/**
 * 创建审批流
 */
export const createAuditConfigUsingPOST = (data: types.CreateAuditConfigVO) => {
  return HttpRequest().$post<types.PageUcAuditConfig>({
    url: '/diap-uc/v1/auditConfig/createAuditConfig',
    data: data
  })
}

// filePath: user-api/swagger-utils/index.ts

type integer = number

/**
* 创建审批流
*/
export interface CreateAuditConfigRoleVO {
  flowOrder?: integer;// 审批流节点排序
  roleId?: number|string;// 角色ID 
}


/**
* 创建审批流
*/
export interface CreateAuditConfigVO {
  createAuditConfigRoleList?: CreateAuditConfigRoleVO[];// 角色节点列表
  name?: string;// 审批流名称
  remark?: string;// 备注 
}
  1. 项目中的使用方式
	"@yh-swagger/business-api": "^1.0.5",
    "@yh-swagger/resource-api": "^1.0.8",
    "@yh-swagger/template-api": "^1.0.4",
    "@yh-swagger/user-api": "^1.0.34"
// 引入
import { Api, types } from '@yh-swagger/user-api'
// 使用
Api.selectAllRoleUsingPOST({ name: searchName.value }).then(res=>{
	console.log(res)
})

以上是整体的开发和使用思路,可以帮助开发者减少接口调用,类型使用,一切都是采用的自动化生成+npm版本管理,你get到了吗,有的同学可能还是比较好奇,main.ts中做了哪些逻辑,分散在不同npm上的api服务,axios怎么做到统一拦截处理的,我们在下一篇再进行详细说明。
挪步vue3+ts实战开发之swagger自动生成工具开发(二)

开源git:swagger-ts-api

希望大家点个star,谢谢

<think>嗯,用户问的是关于Spring Boot 3Vue 3的学习知识点以及系统项目搭建运行的介绍。首先,我需要确定用户的基础,可能是个刚入门的开发者,想要了解这两个技术栈的结合使用。用户的需求很明确,就是要从知识点学习到实际项目搭建的指导。 首先,我应该分两部分来回答:Spring Boot 3Vue 3各自需要掌握的知识点,然后是如何将它们整合在起搭建项目。可能还需要给出个简单的项目示例,帮助用户理解整个流程。 对于Spring Boot 3,需要涵盖基础概念、核心功能,比如自动配置、起步依赖,还有新特性如JDK 17的支持,Native镜像构建。然后模块方面,Web开发、数据访问、安全认证、API文档、配置文件、测试和监控这些都要提到。每个部分的关键点要简明扼要,比如数据访问部分可以讲JPA和MyBatis的区别,安全方面提到Spring Security和OAuth2。 Vue 3部分,同样要基础概念,比如组合式API、响应式原理,然后是核心功能模块,组件化开发、路由、状态管理、UI框架、TypeScript集成、API调用和构建部署。这里需要注意Vue 3Vue 2的区别,比如组合式API的优势,以及Pinia作为新的状态管理工具。 项目搭建部分,需要给出个前后端分离的典型结构,说明如何分别创建后端和前端项目,如何进行联调,比如跨域处理,以及如何部署。示例项目部分,可以举个用户管理的例子,后端提供REST API,前端用Vue实现页面交互,这样用户能更直观地理解。 还要考虑用户可能遇到的问题,比如跨域配置、接口联调时的数据格式、部署时的注意事项。此外,学习资源推荐也很重要,官方文档、社区、开源项目这些都能帮助用户进步学习。 需要确保语言口语化,避免技术术语堆砌,同时逻辑清晰,结构分明。可能用户需要的是步骤式的指导,所以分点列出会比较合适。最后检查有没有遗漏的关键点,比如项目结构、依赖管理、前后端通信方式等,确保覆盖整个开发流程。</think>好的!以下是个关于 **Spring Boot 3 + Vue 3** 的学习路径和项目搭建的详细介绍,适合从知识点学习到实际项目落地的完整流程: --- ### **、技术栈简介** 1. **Spring Boot 3** - Java 后端框架,基于 Spring 5,支持 Java 17+,简化配置和微服务开发。 - 新特性:支持 GraalVM Native 镜像、改进的 Micrometer 监控、Jakarta EE 9+(取代 javax)。 2. **Vue 3** - 前端渐进式框架,支持组合式 API(Composition API)、更好的 TypeScript 集成、性能优化(Proxy 替代 defineProperty)。 --- ### **二、核心知识点学习** #### **Spring Boot 3 学习重点** 1. **基础与核心** - 自动配置(Auto-Configuration)原理 - 起步依赖(Starter Dependencies) - 内嵌容器(Tomcat/Jetty) - Spring MVC 与 RESTful API 开发 - 配置文件(`application.yml` 或 `application.properties`) 2. **数据访问** - Spring Data JPA(Hibernate) - MyBatis 或 MyBatis-Plus 整合 - 事务管理(`@Transactional`) 3. **安全与认证** - Spring Security 6(OAuth2/JWT 整合) - 跨域配置(CORS) 4. **API 文档** - OpenAPI 3(SpringDoc 替代 Swagger) 5. **测试与监控** - 单元测试(JUnit 5 + Mockito) - Actuator 监控端点 - Prometheus + Grafana 集成 6. **其他** - 异步任务(`@Async`) - 缓存(Redis/Caffeine) - 消息队列(RabbitMQ/Kafka) --- #### **Vue 3 学习重点** 1. **基础与核心** - 组合式 API(Composition API) - 响应式原理(`ref`、`reactive`、`watch`、`computed`) - 组件化开发(Props/Emits/Slots) 2. **路由与状态管理** - Vue Router 4(动态路由、导航守卫) - Pinia(替代 Vuex 的状态管理库) 3. **UI 框架** - Element Plus / Ant Design Vue / Vuetify 等组件库 4. **工程化** - Vite 构建工具(替代 Webpack) - TypeScript 集成 - ESLint + Prettier 代码规范 5. **网络请求** - Axios 封装(拦截器、统错误处理) - RESTful API 调用 --- ### **三、项目搭建与运行** #### **1. 前后端分离架构** ``` project-root/ ├── backend/ # Spring Boot 3 项目 │ ├── src/ │ ├── pom.xml # Maven 依赖管理 ├── frontend/ # Vue 3 项目 │ ├── src/ │ ├── package.json # NPM 依赖管理 ``` #### **2. 后端(Spring Boot 3)** 1. **创建项目** - 使用 [Spring Initializr](https://start.spring.io/) 生成项目,选择依赖: `Web`, `Spring Data JPA`, `Lombok`, `Spring Security`, `MySQL Driver` 等。 2. **核心代码示例** ```java // 1. 定义实体类 @Entity @Data public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String username; private String email; } // 2. 定义 REST 控制器 @RestController @RequestMapping("/api/users") public class UserController { @Autowired private UserRepository userRepository; @GetMapping public List<User> getAllUsers() { return userRepository.findAll(); } } ``` 3. **配置跨域** ```java @Configuration public class CorsConfig { @Bean public WebMvcConfigurer corsConfigurer() { return new WebMvcConfigurer() { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins("http://localhost:5173") // Vue 前端地址 .allowedMethods("*"); } }; } } ``` 4. **运行** ```bash mvn spring-boot:run ``` --- #### **3. 前端(Vue 3)** 1. **创建项目** ```bash npm create vue@latest # 选择 TypeScript、Pinia、Router、ESLint 等 ``` 2. **调用后端 API(Axios 示例)** ```typescript // src/api/user.ts import axios from &#39;axios&#39;; const api = axios.create({ baseURL: &#39;http://localhost:8080/api&#39;, }); export const getUsers = () => api.get(&#39;/users&#39;); ``` 3. **页面组件** ```vue <!-- src/views/UserList.vue --> <script setup lang="ts"> import { onMounted, ref } from &#39;vue&#39;; import { getUsers } from &#39;@/api/user&#39;; interface User { id: number; username: string; email: string; } const users = ref<User[]>([]); onMounted(async () => { const response = await getUsers(); users.value = response.data; }); </script> <template> <div> <h1>用户列表</h1> <ul> <li v-for="user in users" :key="user.id">{{ user.username }}</li> </ul> </div> </template> ``` 4. **运行** ```bash npm run dev ``` --- ### **四、联调与部署** 1. **联调注意事项** - 确保后端开启跨域(或通过 Nginx 代理解决)。 - 使用 Postman 或 Apifox 测试接口。 - 前后端统数据格式(如 JSON)。 2. **部署** - **后端**:打包为 JAR 运行,或使用 Docker 容器化。 - **前端**:`npm run build` 生成静态文件,部署到 Nginx/CDN。 --- ### **五、学习资源推荐** 1. **文档** - [Spring Boot 3 官方文档](https://spring.io/projects/spring-boot) - [Vue 3 官方文档](https://vuejs.org/) 2. **社区** - Stack Overflow、GitHub Issues、掘金/知乎技术专栏。 3. **实战项目** - 博客系统、CRM、电商管理后台等。 --- 通过以上步骤,你可以逐步掌握 Spring Boot 3Vue 3 的核心技术,并完成个完整的前后端分离项目!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

槿畔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值