easy-vibe API 设计原理:前后端通信协议与 RESTful 实战指南
【免费下载链接】easy-vibe从 0 到 1 学会 vibe coding,项目制学习项目地址: https://gitcode.com/datawhalechina/easy-vibe
本文是 easy-vibe 项目"从 0 到 1 学会 vibe coding"课程体系中后端基础部分的配套技术文章。前后端如何高效对话?本质上是"对话规则"的设计问题——菜单怎么设计客人一看就懂、服务员怎么记单不出错、上菜怎么规范让客人满意。本文将系统讲解 API 的定义、REST/RESTful 架构哲学、URL 命名语义、HTTP 方法与状态码、错误处理、版本控制与响应结构设计,并结合仓库源码给出电商系统的完整实战示例与 AI 辅助设计模板。读完后,你将掌握一套可直接落地、可被团队评审和 AI 复用的 API 设计方法论。
0. 典型场景与痛点:为什么 API 设计值得认真对待
在正式讲规则之前,先看三个真实项目中反复出现的"噩梦"场景。
场景一:接口命名随心所欲
GET /getUserData GET /fetchUserInfo GET /queryUserById GET /users/query四个接口,功能完全一样,命名风格却各不相同。新人入职一脸懵:我到底该用哪个?
场景二:错误处理五花八门
// 有的返回 HTTP 状态码 HTTP/1.1 404 Not Found // 有的返回 200 + code HTTP/1.1 200 OK { "code": 404, "message": "用户不存在" } // 有的直接抛异常 HTTP/1.1 200 OK { "error": "出错了" }前端拿到响应后,完全不知道该怎么判断请求是否成功。
场景三:响应结构千人千面
// 接口 A { "data": { ... } } // 接口 B { "result": { ... } } // 接口 C { "content": { ... } }每个接口返回格式都不一样,前端只能针对每个接口单独写处理逻辑,封装一个统一请求层变成奢望。
这三个场景的共同根源,是缺少一套前后端共同遵守的"对话规则"。好的 API 设计就像餐厅的点餐系统——菜单清晰、流程规范、出错有提示。这正是 easy-vibe 课程在大模型辅助编写接口代码一节中强调"后端 API 接口是前后端分离架构中至关重要的一环"的原因。
1. API 定义:程序之间对话的约定
API(Application Programming Interface,应用程序编程接口)就是"程序之间对话的约定"。你写代码的第一天其实就在用 API——len("hello")是 Python 提供的 API,open("file.txt")也是,requests.get(url)同样是。API 并不高深,它只是把"程序之间如何交互"这件事标准化了。
1.1 用餐厅来类比
| 餐厅角色 | 对应概念 | 说明 |
|---|---|---|
| 菜单 | API 文档 | 告诉你有哪些"菜"可以点 |
| 服务员 | HTTP 协议 | 标准化的"对话方式" |
| 后厨 | 服务端 | 按"订单"处理请求 |
| 上菜 | 响应 | 把结果返回给"客人" |
在 easy-vibe 课程体系中,这个类比被进一步扩展到了真实项目里:前端(客户端)是餐厅的菜单和点餐桌,数据库(如 Supabase)是后厨仓库,而后端 API 接口就是餐厅服务员——客人不能直接冲进后厨拿食材(既混乱又不安全),而是把"点单诉求"(HTTP Request)告诉服务员,服务员核对(参数校验、权限鉴权)后取回"做好的菜"(HTTP Response,通常是 JSON 数据)端给客人。这正是大模型辅助编写接口代码一节中"前端只关心页面如何渲染,后端只专注业务逻辑、数据处理与安全防护"的分层思想。
1.2 一次完整的 API 请求
一次完整的 API 调用经历四个阶段:请求(客户端向服务器发送请求)→传输(请求通过网络传输到服务器)→处理(服务器处理请求并返回数据)→响应(客户端接收并处理返回结果)。这与 HTTP 协议"一问一答"的请求-响应模式一一对应,更深入的 HTTP 报文结构(请求行、请求头、响应状态行等)可参考HTTP 协议原理一文。easy-vibe 的在线文档还在该小节内嵌了交互式演示组件(<ApiRequestDemo />),点击按钮即可观察一次完整的请求-响应流程,建议动手体验。
2. API 设计哲学:RPC / REST / GraphQL / gRPC
在开始具体的 RESTful 设计之前,先了解四种主流的 API 设计风格,它们是不同历史阶段、不同场景下"对话规则"的代表:
- RPC(Remote Procedure Call,远程过程调用):把远程调用伪装成本地函数调用,语义是"我要执行某个操作"。
- REST(Representational State Transfer):把一切抽象为"资源",用 URL 标识资源、用 HTTP 方法操作资源。
- GraphQL:由 Facebook 提出的查询语言,客户端可按需声明要哪些字段,解决"过度获取 / 欠获取"问题。
- gRPC:Google 开源的高性能 RPC 框架,基于 HTTP/2 与 Protocol Buffers 二进制序列化,适合微服务内部通信。
easy-vibe 文档同样为这四种风格内置了对比演示组件(<ApiStyleCompare />),帮助读者直观理解各自适用场景。本文后续将聚焦应用最广泛的 REST。
2.1 REST 与 RESTful:有什么区别
很多人会混淆这两个概念:
| 概念 | 含义 | 说明 |
|---|---|---|
| REST | 一种架构风格 | 由 Roy Fielding 提出的设计理念,包含一组约束条件 |
| RESTful | 符合 REST 风格的 | 形容词,表示 API 设计遵循了 REST 原则 |
类比:REST 就像"极简主义"——一种设计理念;RESTful API 就像"极简风格的房间"——应用了这个理念的具体实现。
REST 的六大约束:
| 约束 | 说明 |
|---|---|
| 客户端-服务器分离 | 前后端独立开发,接口解耦 |
| 无状态 | 每个请求包含所有必要信息,服务器不保存会话状态 |
| 可缓存 | 响应应标明是否可缓存,提高性能 |
| 统一接口 | 使用标准的 HTTP 方法和状态码 |
| 分层系统 | 客户端无需知道连接的是哪层服务器 |
| 按需代码(可选) | 服务器可以扩展客户端功能 |
为什么 REST 最常用?一是学习成本低:HTTP 协议本身就体现了 REST 思想;二是生态成熟:工具、框架、文档丰富;三是通用性强:任何语言、任何平台都能调用;四是易于缓存:GET 请求天然可缓存,对 CDN 友好。
3. RESTful 设计:让 URL 自己"说话"
REST 的核心思想可以浓缩为三句话:
- 把网络上的事物抽象为"资源"(Resource);
- 用 URL 标识资源;
- 用 HTTP 方法操作资源。
3.1 用仓库来类比
| 仓库概念 | REST 对应 | 示例 |
|---|---|---|
| 货架地址 | URL | /users、/orders |
| 操作方式 | HTTP 方法 | GET(查看)、POST(入库) |
| 货物 | 资源 | 用户数据、订单数据 |
关键原则:URL 是名词,不是动词。资源的状态由 HTTP 方法表达,URL 只负责"指认"资源本身。
3.2 URL 设计规则
| 规则 | 错误示例 | 正确示例 | 说明 |
|---|---|---|---|
| 用名词不用动词 | /getUsers | /users | URL 表示资源,HTTP 方法表示操作 |
| 用复数形式 | /user | /users | 统一复数风格 |
| 小写+连字符 | /UserProfiles | /user-profiles | URL 大小写敏感 |
| 避免层级过深 | /a/b/c/d/e | /a/b/c | 最多 3 层 |
| 过滤用查询参数 | /products/phone/5000 | /products?cat=phone | 过滤条件用?参数 |
💡URL 大小写敏感:统一用小写 + 连字符(-)是最安全的做法,可以避免大小写混乱和下划线风格不一致带来的问题。
3.3 HTTP 方法选择
| 方法 | 用途 | 幂等性 | 安全性 | 典型场景 |
|---|---|---|---|---|
| GET | 获取资源 | 是 | 是 | 查询列表、查看详情 |
| POST | 创建资源 | 否 | 否 | 新增用户、提交订单 |
| PUT | 全量更新 | 是 | 否 | 替换整个用户资料 |
| PATCH | 部分更新 | 否 | 否 | 只修改昵称 |
| DELETE | 删除资源 | 是 | 否 | 删除用户、取消订单 |
💡什么是幂等性?幂等性指"多次执行结果相同"。幂等的操作(GET/PUT/DELETE)点 10 次和点 1 次结果一样;不幂等的操作(POST)点 10 次可能创建 10 个订单。解决方案:POST 操作用唯一 ID 校验,避免重复处理。这一点在真实项目中非常关键——例如电商下单接口,客户端网络超时后重试,如果没有幂等机制就会产生重复订单。
关于 HTTP 方法,仓库配套文档API 入门导论还给出过一个非常直观的餐厅点餐类比:想知道今天有什么菜(GET,纯"问")、点一份宫保鸡丁(POST,创建)、把宫保鸡丁换成糖醋里脊(PUT,替换)、宫保鸡丁不要放花生(PATCH,部分修改)、这道菜不要了(DELETE,删除)——语义边界一目了然。
4. 状态码:让"发生了什么"标准化
HTTP 状态码是服务器告诉客户端"发生了什么"的标准方式,也是客户端做分支判断的第一依据。
4.1 状态码分类
| 分类 | 含义 | 典型状态码 |
|---|---|---|
| 2xx | 成功 | 200 OK、201 Created、204 No Content |
| 3xx | 重定向 | 301 永久移动、304 未修改 |
| 4xx | 客户端错误 | 400 参数错误、401 未认证、404 不存在 |
| 5xx | 服务端错误 | 500 内部错误、503 服务不可用 |
4.2 常用状态码详解
结合API 入门导论中的速查表,实战中最常打交道的状态码及其客户端处理策略如下:
| 状态码 | 含义 | 典型场景 | 客户端处理 |
|---|---|---|---|
| 200 OK | 成功 | 请求正常处理 | 展示数据 |
| 201 Created | 创建成功 | POST 请求成功创建资源 | 跳转到新资源 |
| 400 Bad Request | 请求格式错误 | 参数缺失或格式不对 | 检查参数 |
| 401 Unauthorized | 未认证 | 没有提供有效的 API Key | 引导用户登录 |
| 403 Forbidden | 无权限 | API Key 没有访问该资源的权限 | 提示权限不足 |
| 404 Not Found | 不存在 | 请求的地址或资源不存在 | 检查 URL |
| 429 Too Many Requests | 请求过多 | 超过了速率限制 | 稍后重试 |
| 500 Internal Server Error | 服务器错误 | 服务端出了问题 | 提示用户稍后重试 |
easy-vibe 文档内嵌了状态码演示组件(<StatusCodeDemo />),可交互查看常见状态码含义;关于 401/403 背后"你是谁 / 你能做什么"的认证与授权体系,可进一步阅读认证与授权。
5. 错误处理:优雅地"拒绝"
好的错误处理能让客户端"看状态码就知道怎么回事",而不是去猜。下面三个坑是团队协作中最常见的反面教材。
坑 1:所有错误都返回 200
// ❌ 错误做法 HTTP/1.1 200 OK { "error": "出错了" }问题:缓存层会缓存这个"成功"响应,监控系统也无法通过状态码发现异常。
坑 2:错误信息太笼统
// ❌ 错误做法 HTTP/1.1 400 Bad Request { "message": "参数错误" }问题:客户端不知道哪个参数错了、为什么错,排障全靠猜。
坑 3:暴露敏感信息
// ❌ 危险做法 HTTP/1.1 500 Internal Server Error { "stack": "at UserService.login...", "sql": "SELECT * FROM..." }危险:把代码结构、数据库查询语句直接抛给前端,攻击者可以利用这些信息实施攻击。easy-vibe 在大模型辅助编写接口代码的"后端接口必知的最佳实践"中也明确强调:500 时要尽量避免将报错调用栈直接暴露给前端,否则有安全隐患。
正确的错误处理应该做到三点:语义化状态码(4xx 代表客户端问题、5xx 代表服务端问题)、结构化错误体(包含错误码、人类可读的 message、可定位的字段)、不泄露内部细节(堆栈、SQL 一律留在服务端日志里)。文档内嵌的错误处理对比演示组件(<ErrorHandlingDemo />)可直观对比"好的"与"差的"错误响应设计。
6. 版本控制:API 的"向后兼容"
6.1 版本控制的动机
场景:你的 App 有 100 万用户,现在需要修改订单接口。
如果不做版本控制:新 App 调用新接口一切正常,但旧 App(尚未发版更新)调用新接口时会因字段缺失而崩溃!
正确的做法:让新旧接口并存——
/v1/orders:旧接口,继续服务旧 App;/v2/orders:新接口,新功能在这里。
6.2 版本控制策略
| 策略 | 示例 | 优点 | 缺点 |
|---|---|---|---|
| URL 路径 | /v1/users | 直观、易缓存 | URL 变长 |
| 请求头 | Accept: vnd.api.v2+json | URL 干净 | 不便调试 |
| 查询参数 | /users?version=2 | 简单 | 不够标准 |
其中URL 路径方式最直观、最易缓存,也是 easy-vibe 实战章节默认采用的策略(见下文的电商示例与 AI 设计模板中的/v1/前缀)。
6.3 版本演进示例
以用户接口为例,展示 v1 到 v2 的典型演进:
| 接口 | v1(旧版) | v2(新版) | 变化说明 |
|---|---|---|---|
| 获取用户 | GET /v1/users返回: name, email | GET /v2/users返回: name, email, avatar, phone | 新增头像、手机号字段 |
| 创建订单 | POST /v1/orders接收: items[] | POST /v2/orders接收: items[], coupons[] | 新增优惠券支持 |
| 批量操作 | 无 | POST /v2/orders/batch | 新增批量创建接口 |
💡版本控制最佳实践:保持向后兼容(v1 接口至少维护 6-12 个月,给客户端升级时间);文档同步更新(每个版本有独立的 API 文档);废弃公告(提前通知 v1 下线时间,引导迁移);监控使用情况(统计 v1 调用量,确认可以安全下线后再停止服务)。
7. 响应结构设计:前后端协作的"数据契约"
响应结构是前后端协作的"数据契约",统一格式能大幅降低沟通成本。文档内嵌了响应结构演示组件(<ResponseStructureDemo />),而业界头部公司早已用各自的实践给出了成熟答案。
7.1 大厂实践参考
Google API 设计指南
Google 要求所有 API 错误响应必须包含google.rpc.Status消息结构:
{ "error": { "code": 429, "message": "资源不足,请稍后重试", "status": "RESOURCE_EXHAUSTED", "details": [ { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "reason": "RESOURCE_AVAILABILITY", "domain": "compute.googleapis.com", "metadata": { "zone": "us-east1-a", "service": "compute" } } ] } }核心要求:必须包含ErrorInfo提供机器可读的错误标识;message面向开发者,用简洁语言描述问题和解决方案;details数组可包含LocalizedMessage(本地化消息)、Help(帮助链接)等扩展信息。
Microsoft REST API 指南
微软强调响应的一致性,并区分了两类失败:
- 错误(Error):客户端传递无效数据导致,返回 4xx,不影响 API 可用性;
- 故障(Fault):服务端无法正确响应有效请求,返回 5xx,影响 API 可用性。
响应标头规范:Date必须返回(RFC 5322 格式,GMT 时区);Content-Type必须返回;支持乐观并发控制的资源必须返回ETag。
阿里巴巴 Java 开发手册
阿里给出的统一返回对象是业界最常见的code + message + data + requestId四段式:
public class Result<T> { private Integer code; private String message; private T data; private String requestId; }配套的错误码分段设计让错误码本身具备语义:
| 范围 | 类型 | 示例 |
|---|---|---|
| 0 | 成功 | 0 |
| 1xxxx | 参数错误 | 10001 缺少必填参数 |
| 2xxxx | 业务错误 | 20001 余额不足 |
| 3xxxx | 认证错误 | 30001 未登录 |
| 5xxxx | 系统错误 | 50001 数据库异常 |
Stripe API 响应设计
Stripe 的错误响应以"精细化"著称:
{ "error": { "type": "card_error", "code": "card_declined", "message": "Your card was declined.", "param": "number", "decline_code": "insufficient_funds", "doc_url": "https://stripe.com/docs/error-codes/card-declined" } }设计亮点:type区分错误类型(api_error、card_error、invalid_request_error);param指出具体哪个参数出错,前端可直接定位表单字段;doc_url提供文档链接;decline_code提供更细粒度的错误原因。
JSON:API 规范
JSON:API 是业界广泛采纳的 JSON API 响应规范,核心是"主资源 + 关联资源一次返回":
{ "data": { "type": "articles", "id": "1", "attributes": { "title": "JSON:API 规范详解" }, "relationships": { "author": { "data": { "type": "users", "id": "9" } } } }, "included": [ { "type": "users", "id": "9", "attributes": { "name": "张三" } } ] }核心设计:data包含主资源,必须有type和id;attributes存放资源属性;relationships描述资源关联;included避免重复请求,一次性返回关联数据。
GitHub REST API 响应设计
GitHub 的成功响应包含多种 URL 格式方便不同场景使用,错误响应则携带文档链接:
// 成功响应 { "id": 1296269, "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", "name": "Hello-World", "full_name": "octocat/Hello-World", "owner": { "login": "octocat", "id": 1, "avatar_url": "https://github.com/images/error/octocat_happy.gif" }, "private": false, "html_url": "https://github.com/octocat/Hello-World" } // 错误响应 { "message": "Bad credentials", "documentation_url": "https://docs.github.com/rest" }设计亮点:响应包含html_url、url等多种 URL 格式;错误响应包含documentation_url指向文档;使用Link响应头实现分页导航。
Twitter/X API v2 响应设计
Twitter API v2 采用"主数据 + 关联数据"的简洁格式,与 JSON:API 思路一致:
{ "data": { "id": "1460323737035677698", "text": "Hello, Twitter!" }, "includes": { "users": [ { "id": "2244994945", "name": "Twitter Dev", "username": "TwitterDev" } ] } }设计亮点:data包含主数据,includes包含关联数据;支持字段选择(?tweet.fields=created_at,public_metrics);分页使用next_token和previous_token。
7.2 最佳实践总结
综合以上规范,响应结构设计应遵循以下原则:
- 一致性优先:所有接口使用相同的响应结构,前端可统一封装请求层;
- 机器可读:错误码 + 错误原因(reason)让程序能自动处理;
- 人类友好:message 描述清晰,包含解决建议;
- 可追踪:request_id 贯穿请求全链路,便于问题定位;
- 国际化支持:通过 details 扩展本地化消息。
7.3 data 字段设计规范
data是响应的核心,其设计直接影响前端开发效率。文档内嵌了 data 字段设计演示组件(<DataFieldDesignDemo />),核心考量包括:data 的层级与扁平化、字段命名风格(如 snake_case 与 camelCase 的统一)、空值处理、分页字段(page/page_size或next_token)约定等。一套稳定的 data 契约,能让前端类型定义、状态管理代码的复用率大幅提升。
7.4 错误响应设计进阶
在基础错误结构之上,进阶设计(对应文档内嵌的<ErrorResponseDesignDemo />组件)通常还会补充:错误码与 HTTP 状态码的映射关系表、字段级错误定位(如field_errors: [{ field: "email", code: "invalid_format" }])、重试提示(针对 429/503 给出Retry-After建议)以及跟踪标识(request_id / trace_id),让前端既能机器判断、又能人性化提示。
8. 实战:电商系统 API 设计示例
将上述规则落地到电商系统,一套完整的接口设计如下:
# 用户模块 GET /v1/users # 获取用户列表 POST /v1/users # 创建新用户 GET /v1/users/{id} # 获取用户详情 PUT /v1/users/{id} # 全量更新用户 PATCH /v1/users/{id} # 部分更新用户 DELETE /v1/users/{id} # 删除用户 # 订单模块 GET /v1/users/{id}/orders # 获取某用户的订单 POST /v1/orders # 创建订单 GET /v1/orders/{id} # 获取订单详情 PATCH /v1/orders/{id}/status # 更新订单状态 # 商品模块(复杂过滤用查询参数) GET /v1/products?category=phone&price_max=5000&sort=price_desc&page=1注意几个细节:资源关系通过嵌套路径表达(/users/{id}/orders);同一资源的不同操作由方法区分(GET/POST/PUT/PATCH/DELETE 各司其职);复杂过滤与排序交给查询参数而不是塞进路径;版本号统一放在路径最前面。
这套规范与 easy-vibe 实战课程的判断标准完全一致——大模型辅助编写接口代码中明确指出:好的设计是GET /api/users(获取用户列表)、POST /api/users(创建用户),URL 应代表"资源"的名词;错误的设计是POST /api/getUser或POST /api/createUser,动词应交由 HTTP 方法体现。
9. 用 AI 辅助设计 API
在 vibe coding 的工作流里,AI 可以帮你快速生成符合规范的 API 设计。关键在于提供清晰的上下文和约束条件——AI 不怕需求复杂,最怕需求模糊(这一结论同样来自 easy-vibe 的实战章节)。
9.1 提示词模板
你是一位资深的后端架构师,精通 RESTful API 设计。请帮我设计一套 API 接口。 ## 业务背景 [描述你的业务场景,例如:电商系统、博客平台、任务管理等] ## 功能需求 [列出需要的功能模块,例如: - 用户管理:注册、登录、个人信息 - 订单管理:创建订单、查询订单、取消订单 - 商品管理:商品列表、商品详情、搜索] ## 设计要求 1. 遵循 RESTful 规范 2. URL 使用名词复数,小写+连字符 3. 正确使用 HTTP 方法(GET/POST/PUT/PATCH/DELETE) 4. 统一的响应格式:{ code, message, data, request_id } 5. 合理的状态码使用 6. 版本控制:URL 路径方式(/v1/) ## 输出格式 请按以下格式输出: ### 接口列表 | 方法 | URL | 描述 | 请求体 | 响应体 | |------|-----|------|--------|--------| ### 请求/响应示例 [关键接口的详细示例] ### 状态码说明 [使用的状态码及其含义]9.2 实战示例:电商订单 API
输入提示词:
你是一位资深的后端架构师,精通 RESTful API 设计。请帮我设计一套电商订单系统的 API 接口。 ## 业务背景 一个 B2C 电商平台,用户可以浏览商品、下单购买、查看订单状态。 ## 功能需求 - 订单模块:创建订单、查询订单列表、查询订单详情、取消订单、支付订单 - 购物车模块:添加商品、修改数量、删除商品、查看购物车 ## 设计要求 1. 遵循 RESTful 规范 2. URL 使用名词复数,小写+连字符 3. 正确使用 HTTP 方法 4. 统一的响应格式 5. 版本控制:/v1/AI 输出示例:
| 方法 | URL | 描述 |
|---|---|---|
POST | /v1/orders | 创建订单 |
GET | /v1/orders | 查询订单列表 |
GET | /v1/orders/{id} | 查询订单详情 |
PATCH | /v1/orders/{id}/status | 更新订单状态(取消/支付) |
GET | /v1/users/{id}/cart | 获取购物车 |
POST | /v1/users/{id}/cart/items | 添加商品到购物车 |
PATCH | /v1/users/{id}/cart/items/{itemId} | 修改购物车商品数量 |
DELETE | /v1/users/{id}/cart/items/{itemId} | 删除购物车商品 |
9.3 AI 辅助设计的注意事项
| 注意点 | 说明 |
|---|---|
| 提供完整上下文 | 业务背景、用户角色、数据关系都要说清楚 |
| 明确约束条件 | 命名规范、版本策略、响应格式等要提前定义 |
| 迭代优化 | 第一次输出可能不完美,追问细节、要求修改 |
| 人工审核 | AI 生成的内容需要人工检查是否符合业务需求 |
| 补充边界情况 | 让 AI 考虑错误处理、权限控制、分页等边界情况 |
💡追问技巧:设计初稿生成后,可以通过追问持续打磨——"请补充每个接口的错误响应示例"、"请考虑分页、排序、过滤参数"、"请添加接口的权限控制说明"、"请检查是否符合 RESTful 最佳实践"。
值得补充的是,AI 辅助设计不止于"画接口表"。在 easy-vibe 的大模型辅助编写接口代码实战中,同样的思路被延伸到了整个后端开发生命周期:给 AI 提供数据库字段定义(Schema)和约束条件让它直接生成 Node.js + Express 的 CRUD 接口(例如基于 Supabase 的menu_items表新增接口,包含参数校验与错误捕获);让 AI 根据代码逆向生成 OpenAPI/Swagger 接口文档,降低前后端沟通成本;再让 AI 把接口文档转成Postman 可导入的 JSON 集合并用 Jest 生成边界测试用例(如传入负数价格时校验是否生效)。设计规范由此贯通了"设计 → 编码 → 文档 → 测试"的完整闭环。
名词速查表
| 名词 | 英文 | 解释 |
|---|---|---|
| API | Application Programming Interface | 程序之间对话的约定 |
| REST | Representational State Transfer | 一种架构风格,用 URL 标识资源 |
| 资源 | Resource | REST 架构的核心概念,有唯一标识(URL) |
| 幂等性 | Idempotency | 多次执行结果相同 |
| 状态码 | Status Code | HTTP 协议定义的响应状态 |
| 版本控制 | Versioning | 让新旧 API 并存,平滑升级 |
| 请求体 | Request Body | POST/PUT/PATCH 请求携带的数据 |
| 响应体 | Response Body | 服务器返回的数据 |
| Header | Header | 请求/响应的元数据(如 Content-Type) |
| 认证 | Authentication | 验证"你是谁"(登录、Token) |
| 授权 | Authorization | 验证"你能做什么"(权限) |
延伸阅读(easy-vibe 仓库内)
- API 入门导论:从零理解程序之间的通信,含 HTTP 方法、状态码速查与 SDK 选型
- HTTP 协议原理:前后端的通信语言,深入请求/响应报文结构
- 认证与授权:Authentication 与 Authorization 的实现细节
- 大模型辅助编写接口代码与接口文档:将本文规范落地为 Node.js + Express + Supabase 的完整实战
【免费下载链接】easy-vibe从 0 到 1 学会 vibe coding,项目制学习项目地址: https://gitcode.com/datawhalechina/easy-vibe
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考