news 2026/4/20 2:56:13

API的基础讲解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
API的基础讲解

接口(API)、请求体/响应体、请求类型、状态码、RESTful API 实战指南


1. 接口(API):前后端的通信通道

核心比喻

  • 前端 = 顾客
  • 后端 = 厨房
  • 接口 = 点餐窗口 + 菜单规则

真实接口示例

  • 登录:POST /api/login
  • 获取用户信息:GET /api/user/1001
  • 删除商品:DELETE /api/goods/2024

2. 请求体(Request Body):前端传给后端的数据

适用场景:POST(新增)、PUT(更新)、PATCH(部分更新)

真实示例
// 注册新用户 { "username": "wangwu", "password": "abc123", "phone": "13800138000" } // 修改商品库存(PATCH) { "stock": 50 }

3. 响应体(Response Body):后端返回的数据

行业通用格式

{ "code": 200, // 状态码 "msg": "success", // 提示信息 "data": {} // 核心数据 }
真实响应示例
// 获取订单列表 { "code": 200, "data": [ { "id": 3001, "amount": 99.9 }, { "id": 3002, "amount": 200 } ] } // 登录失败 { "code": 400, "msg": "密码错误" }

4. 请求类型(HTTP Methods)
方法作用实战示例
GET查询数据GET /api/orders?page=1
POST新增资源POST /api/products
PUT全量更新PUT /api/user/1001
PATCH部分更新PATCH /api/user/1001/avatar
DELETE删除资源DELETE /api/cart/2024

5. 状态码(HTTP Status Code)

高频状态码速查表

状态码含义触发场景
200成功查询订单成功
201创建成功新建用户成功
400客户端错误提交了无效的手机号
401未授权未登录访问个人资料
404资源不存在访问不存在的商品ID
500服务器内部错误数据库连接失败

6. RESTful API 设计规范

核心原则

  1. URL 用名词表示资源(如/users,不用/getUsers
  2. HTTP 方法表示操作(GET/POST = 查/增)
  3. 状态码传达结果
传统接口 vs RESTful 对比
操作传统风格RESTful 风格
获取用户GET /api/getUser?id=1GET /api/users/1
修改商品POST /api/updateGoodsPUT /api/goods/2024
删除评论GET /api/delCommentDELETE /api/comments/5

7. 完整实战案例:用户系统

场景:前端用 Axios 调用 RESTful 接口

// 1. 获取用户列表 axios.get('/api/users', { params: { page: 1 } }) // 2. 创建新用户 axios.post('/api/users', { name: "李四", job: "工程师" }) // 3. 更新用户(PUT全量更新) axios.put('/api/users/1001', { name: "李四新名字", job: "高级工程师" }) // 4. 删除用户 axios.delete('/api/users/1001')

响应处理示例

axios.get('/api/users/1001') .then(response => { console.log(response.data); // { code:200, data:{ id:1001, name:"李四" } } }) .catch(error => { if (error.response.status === 404) { alert("用户不存在!"); } });

附录:Axios 请求模板(复制可用)
// 通用配置 const service = axios.create({ baseURL: '/api', timeout: 5000 }); // 请求拦截器(例如添加token) service.interceptors.request.use(config => { config.headers.Authorization = 'Bearer xxx'; return config; }); // 响应拦截器(统一处理错误) service.interceptors.response.use( response => response.data, // 直接返回data字段 error => { if (error.response.status === 401) { router.push('/login'); // 跳转到登录页 } return Promise.reject(error); } );

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/20 2:52:15

org.openpnp.vision.pipeline.stages.Normalize

文章目录org.openpnp.vision.pipeline.stages.Normalize功能参数例子 - 灰度图片效果例子 - 彩色图片效果ENDorg.openpnp.vision.pipeline.stages.Normalize 功能 对图像进行归一化处理,根据图像通道数的不同采取两种策略: 单通道图像(灰度…

作者头像 李华
网站建设 2026/4/20 2:48:14

智能客服的终局:从关键词匹配到能够处理复杂售后的全能 Agent

智能客服的终局:从关键词匹配到处理百万级SKU复杂售后的全能Agent架构实战 副标题:基于 LangGraph 向量知识库RAG Chain-of-Thought拆解 动态工具链调度的电商全链路售后 Agent 落地指南第一部分:引言与基础 1. 引言:为什么智能…

作者头像 李华
网站建设 2026/4/20 2:42:49

别再只盯着5G了!从BBU、RRU到AAU,一文看懂你家附近基站到底长啥样

从铁塔到芯片:解码现代基站的技术演进与视觉识别指南 每天通勤路上,那座耸立在写字楼顶端的灰色铁塔总是格外醒目——它顶部排列着几排白色长方形面板,侧面挂着几个金属盒子,底部延伸出密密麻麻的线缆。这些看似简单的装置&#x…

作者头像 李华
网站建设 2026/4/20 2:40:16

如何让导航栏的下落动画效果更慢?

通过调整 CSS 动画的持续时间(如将 0.2s 改为 0.6s 或更长),即可平滑控制 Bootstrap 导航栏下落动画的速度,同时需配合 transform 与 opacity 实现更自然的过渡效果。 通过调整 css 动画的持续时间(如将 0.2s 改为…

作者头像 李华
网站建设 2026/4/20 2:36:24

世界模型是人机环境系统智能的子集吗?

AI科学的“世界模型”与智能领域里的“人机环境系统智能”,虽然在各自的语言体系里自说自话,但本质上都在描述同一个“从看懂世界到改变世界”的闭环。1、世界模型 (从AI的工程视角)表征 (Representation): 把高维的原始数据(图像…

作者头像 李华