跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
TypeScript大前端

前端请求分层与自动接口生成方案

探讨前端请求分层架构与自动接口生成方案。针对接口散落在页面、类型不统一等问题,提出四层结构(request/http 基础设施、service/原子封装、api/业务语义、hooks/页面层)。推荐结合 OpenAPI/Swagger 使用 openapi-generator 或 swagger-typescript-api 自动生成类型定义与请求方法,实现前后端契约驱动开发,提升维护性与开发效率。

邪神洛基发布于 2026/4/6更新于 2026/9/1070 浏览

一、为什么要做「前端请求分层」?

先看一个没有分层的典型问题:

// 页面里
const res = await request('/api/user/list', {
  method: 'POST',
  data: { page: 1 }
})
setData(res.data.list)

❌ 问题:

  • 接口地址散落在页面
  • data / params 结构不统一
  • 返回值类型靠猜
  • 后端字段改一次 → 全站崩
  • mock / 真接口切换痛苦

目标

页面不关心 HTTP,只关心'业务能力'

const users = await getUserList({ page: 1 })

二、经典的前端请求分层结构

一个成熟前端项目,请求通常分 3~4 层:

src/
├── api/       ← 业务接口层(给页面用)
├── services/  ← 原子请求层(HTTP 细节)
├── request/   ← axios / fetch 封装
└── types/     ← 接口类型定义(自动生成)

下面逐层解释。

request 层(HTTP 基础设施)

只干一件事:稳定、可控地发请求

// request/index.ts
import axios from 'axios'

export const http = axios.create({
  baseURL: '/api',
  timeout: 10000
})

http.interceptors.response.( res)
use
(res) =>

service 层(接口原子封装)

将具体接口调用封装为函数,处理参数校验、错误映射等。

api 层(业务语义层)

对外暴露符合业务场景的 API,如 getUserList。

页面 / hooks 层

在组件或 Hooks 中直接调用 api 层方法。

三、什么是「自动接口生成」?

通过工具根据后端文档自动生成前端请求代码和类型定义。

常见来源

  • OpenAPI(Swagger) —— 最主流

常用工具(重点)

  • openapi-generator(通用)
  • swagger-typescript-api(TypeScript 友好)
  • 阿里系(部分内部工具)

四、推荐的「自动生成 + 分层」组合方案(实战)

工作流

  1. 后端维护 OpenAPI 规范
  2. 运行代码生成工具
  3. 将生成的文件放入 types/ 或 api/
  4. 手动编写 service/ 层进行二次封装
  5. 页面调用 api/ 层

api 层示例

// api/user.ts
import { http } from '@/request'
import type { UserListResponse } from '@/types'

export async function getUserList(params: { page: number }) {
  return http.get<UserListResponse>('/user/list', { params })
}

五、进阶

  • 与 React Hooks 结合:封装 useQuery 等
  • 与 Mock 联动:配合 MSW 或 Mock.js
  • Monorepo / 多端复用:共享 API 定义包

六、什么时候不适合自动生成?

  • 接口变动极其频繁且无文档
  • 强依赖特定业务逻辑无法抽象
  • 遗留系统无 Swagger 支持

最后一句总结

分层架构配合自动生成,是提升前端工程化效率的关键路径。

目录

  1. 一、为什么要做「前端请求分层」?
  2. 目标
  3. 二、经典的前端请求分层结构
  4. request 层(HTTP 基础设施)
  5. service 层(接口原子封装)
  6. api 层(业务语义层)
  7. 页面 / hooks 层
  8. 三、什么是「自动接口生成」?
  9. 常见来源
  10. 常用工具(重点)
  11. 四、推荐的「自动生成 + 分层」组合方案(实战)
  12. 工作流
  13. api 层示例
  14. 五、进阶
  15. 六、什么时候不适合自动生成?
  16. 最后一句总结

更多推荐文章

查看全部
  • C++ ODB ORM 框架使用指南
  • SpringBoot 整合 Neo4j 图数据库实战指南
  • Claude Skills 实战:自动化工作流与技能管理
  • Linux 管道通信详解:匿名管道进程池与命名管道服务端模型
  • UML 类图及六大关系详解:继承、实现、依赖、关联、聚合、组合
  • Web UI 自动化测试 CI/CD:推送本地代码到 Git 远程仓库
  • Python Flask 多文件项目打包部署:Linux+Docker+Windows 全环境
  • Linux 系统下 Vim 编辑器基础操作指南
  • Bing Webmaster 工具使用指南:站点验证与收录提交
  • Discord 机器人创建与配置全流程指南
  • 20 篇必读大模型论文:涵盖视频生成、智能体与多模态
  • 大模型基础概念与本地部署实战指南
  • 鸿蒙金融理财全栈项目:上线运维、用户反馈与持续迭代
  • C++ 内存区域详解:堆、栈与静态区变量存储
  • 链表实现解析:结构体与数组两种方式
  • 前端防录屏原理:EME 与 DRM 机制及实战代码
  • 电商产品 AI 绘画提示词撰写实战指南
  • 提示词工程(Prompt Engineering)基础与实践指南
  • SpringBoot+Nacos 整合达梦数据库:MySQL 迁移与持久化配置实战
  • MySQL 核心解析:索引、设计、事务与视图

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online