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

微服务架构下前端如何配置 OpenAPI 接口

在微服务架构中,后端通常由多个独立的服务组成,每个服务可能提供自己的 API 接口。为了在前端项目中高效地调用这些 API,可以使用 OpenAPI 规范生成客户端代码。以下是详细的配置步骤和最佳实践:

 1. 理解 OpenAPI 规范
OpenAPI 是一种用于描述 RESTful API 的规范(以前称为 Swagger 规范)。它定义了 API 的接口、参数、返回值等信息,并可以通过工具生成客户端代码。

OpenAPI 规范文件:通常是 `swagger.json` 或 `openapi.json`,可以通过后端服务的 `/v2/api-docs` 或 `/v3/api-docs` 路径获取。
生成客户端代码:使用 OpenAPI 工具(如 `openapi-typescript-codegen` 或 `openapi-generator-cli`)生成前端可用的 API 客户端代码。

2. 生成客户端代码

2.1 **安装工具
安装 `openapi-typescript-codegen` 或 `openapi-generator-cli`:

npm install openapi-typescript-codegen --save-dev
# 或
npm install @openapitools/openapi-generator-cli -g

2.2 生成代码
为每个微服务生成客户端代码。

# 生成 judge 服务的客户端代码
openapi --input http://localhost:8101/api/judge/v2/api-docs --output ./src/generated/judge --client axios

# 生成 question 服务的客户端代码
openapi --input http://localhost:8101/api/question/v2/api-docs --output ./src/generated/question --client axios

# 生成 user 服务的客户端代码
openapi --input http://localhost:8101/api/user/v2/api-docs --output ./src/generated/user --client axios

2.3 生成的代码结构
生成的代码会输出到指定目录(如 `./src/generated`),结构如下:

./src/generated/
  ├── judge/
  │   ├── api.ts          # API 客户端
  │   ├── models.ts       # 数据模型(类型定义)
  │   └── index.ts        # 入口文件
  ├── question/
  │   ├── api.ts
  │   ├── models.ts
  │   └── index.ts
  └── user/
      ├── api.ts
      ├── models.ts
      └── index.ts

3. 在前端项目中使用生成的代码 3.1 引入生成的客户端代码
在项目中引入生成的客户端代码

// 引入 judge 服务的客户端代码
import { DefaultApi as JudgeApi } from '@/generated/judge';

// 引入 question 服务的客户端代码
import { DefaultApi as QuestionApi } from '@/generated/question';

// 引入 user 服务的客户端代码
import { DefaultApi as UserApi } from '@/generated/user';

通过以上步骤,你可以在微服务架构下高效地配置和使用 OpenAPI 接口,提升开发效率和代码质量。

相关文章:

  • 孤儿进程与僵尸进程:Linux进程管理中的“隐形杀手”与“无主孤儿”
  • 第7章 站在对象模型的尖端2: 异常处理
  • 全国医院数据可视化分析系统
  • 2.8滑动窗口专题:最小覆盖子串
  • 【QT:控件】
  • 42、【OS】【Nuttx】【OSTest】内存监控:堆空间初始化
  • RocketMQ企业应用篇
  • 掌握xtquant:实时行情订阅与数据处理的实战指南
  • Vue 生命周期详解:从创建到销毁的全过程
  • 基于大模型的智能客服搭建
  • 构建高性能企业RAG落地-分块的艺术
  • 看门狗机制
  • Matlab 四分之一车体车辆半主动悬架鲁棒控制
  • 马可·波罗的历史及其对中国的影响
  • 在树莓派上运行 COCO-SSD MobileNet 目标检测:完整指南
  • Django初窥门径-Django REST Framework 基础使用
  • 为什么需要使用十堰高防服务器?
  • 电机控制常见面试问题(十一)
  • JSON 语法详解
  • yolov8训练时报错ValueError: I/O operation on closed file.
  • 朝鲜海军新型驱逐舰进行首次武器系统测试
  • 移动互联网未成年人模式正式发布
  • 普京与卢卡申科举行会晤,将扩大在飞机制造等领域合作
  • 美航母一战机坠海,美媒:为躲避胡塞武装攻击,损失超六千万美元
  • 北京公园使用指南
  • 科学时代重读“老子”的意义——对谈《老子智慧八十一讲》