news 2026/6/15 22:13:31

RESTful API 实践

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
RESTful API 实践

RESTful API 实践指南:从零到上手一个完整项目

现在我们从理论转向真实实践!下面一步步带你实现一个简单的TODO 任务管理 RESTful API(经典入门项目),支持增删改查、分页、认证等生产级特性。你可以选择 Node.js (Express) 或 Python (FastAPI) 来实现——两者都是 2025 年最流行的选择。

1. 项目整体架构预览

RESTful API 的典型架构:客户端(浏览器/App) → HTTPS → API 网关 → 后端服务 → 数据库。

2. 实践步骤(通用流程)
  1. 准备环境

    • 安装 Node.js (v20+) 或 Python (3.10+)
    • 使用 SQLite 或 MongoDB 作为数据库(简单上手)
    • 安装 Postman 或 Insomnia 用于测试
  2. 定义 API 接口(TODO 任务资源)

操作URL方法请求体示例响应状态码
获取任务列表/api/v1/todosGET?page=1&limit=10&status=done200
获取单个任务/api/v1/todos/123GET-200/404
创建任务/api/v1/todosPOST{“title”: “学习REST”, “done”: false}201
更新任务/api/v1/todos/123PATCH{“done”: true}200
删除任务/api/v1/todos/123DELETE-204
  1. 实现代码示例

选项A:Node.js + Express(最经典)

// server.jsconstexpress=require('express');constapp=express();app.use(express.json());lettodos=[];// 模拟数据库letnextId=1;// 获取列表(支持分页)app.get('/api/v1/todos',(req,res)=>{const{page=1,limit=10}=req.query;conststart=(page-1)*limit;constdata=todos.slice(start,start+limit);res.json({data,meta:{total:todos.length,page:+page,limit:+limit}});});// 创建app.post('/api/v1/todos',(req,res)=>{consttodo={id:nextId++,...req.body,created_at:newDate()};todos.push(todo);res.status(201).json({data:todo});});// 更新(PATCH)app.patch('/api/v1/todos/:id',(req,res)=>{consttodo=todos.find(t=>t.id===+req.params.id);if(!todo)returnres.status(404).json({error:{message:'Not Found'}});Object.assign(todo,req.body);res.json({data:todo});});// 删除app.delete('/api/v1/todos/:id',(req,res)=>{todos=todos.filter(t=>t.id!==+req.params.id);res.status(204).send();});app.listen(3000,()=>console.log('API 运行在 http://localhost:3000'));

选项B:Python + FastAPI(现代高效,自动生成文档)

# main.pyfromfastapiimportFastAPI,HTTPExceptionfrompydanticimportBaseModelfromtypingimportOptionalimportuvicorn app=FastAPI()classTodo(BaseModel):title:strdone:bool=Falsetodos={}next_id=1@app.get("/api/v1/todos")defget_todos(page:int=1,limit:int=10):start=(page-1)*limit items=list(todos.values())[start:start+limit]return{"data":items,"meta":{"total":len(todos)}}@app.post("/api/v1/todos",status_code=201)defcreate_todo(todo:Todo):globalnext_id new_todo={"id":next_id,**todo.dict()}todos[next_id]=new_todo next_id+=1return{"data":new_todo}@app.patch("/api/v1/todos/{todo_id}")defupdate_todo(todo_id:int,update:Todo):iftodo_idnotintodos:raiseHTTPException(404,"Not Found")todos[todo_id].update(update.dict(exclude_unset=True))return{"data":todos[todo_id]}@app.delete("/api/v1/todos/{todo_id}",status_code=204)defdelete_todo(todo_id:int):todos.pop(todo_id,None)if__name__=="__main__":uvicorn.run(app,port=8000)

运行后访问http://localhost:8000/docs就能看到自动生成的交互文档!

4. 测试你的 API

Postman发送请求是最常见的实践方式。

  • 创建 Collection
  • 添加环境变量(base_url)
  • 写 Tests 脚本验证状态码和响应体
  • 导出分享给团队
5. 生成交互式文档(强烈推荐)

Swagger UI / Redoc自动生成文档,让前端开发者“自助式”查看和测试 API。

FastAPI 自带,Express 可以用 swagger-jsdoc + swagger-ui-express。

6. 生产级实践建议
  • 认证:加 JWT 中间件,所有接口(除登录)都需要 Authorization: Bearer
  • 校验:用 Joi (Node) 或 Pydantic (Python) 自动校验请求体
  • 数据库:换成 PostgreSQL + Prisma (Node) 或 SQLAlchemy (Python)
  • 部署:Docker 容器化 → Vercel / Render / AWS
  • 监控:加 Winston / Loguru 日志,Sentry 错误追踪
  • 版本迭代:用 /v1/ /v2/ 区分大版本变更
7. 马上开始!
  1. 复制上面的代码,新建文件运行
  2. 用 Postman 测试所有接口
  3. 扩展功能:加用户认证、任务标签、文件上传等

做完这个项目,你就真正掌握了 RESTful API 的全流程!如果想看完整 GitHub 示例仓库、加认证的代码、或用其他框架(Spring Boot、Gin Go)实现,告诉我,我马上给你贴出来~

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

CO3Dv2三维重建终极实战:从零构建高效视觉系统

CO3Dv2三维重建终极实战:从零构建高效视觉系统 【免费下载链接】co3d Tooling for the Common Objects In 3D dataset. 项目地址: https://gitcode.com/gh_mirrors/co/co3d 在三维视觉技术快速发展的今天,如何选择合适的数据集和工具链成为开发者…

作者头像 李华
网站建设 2026/6/15 3:28:32

Pympress:专业演示者的双屏PDF阅读器终极指南

Pympress:专业演示者的双屏PDF阅读器终极指南 【免费下载链接】pympress Pympress is a simple yet powerful PDF reader designed for dual-screen presentations 项目地址: https://gitcode.com/gh_mirrors/py/pympress Pympress是一款专为演示场景设计的强…

作者头像 李华
网站建设 2026/6/15 14:13:12

巡风漏洞扫描系统:企业内网安全的终极防护利器

巡风漏洞扫描系统:企业内网安全的终极防护利器 【免费下载链接】xunfeng ysrc/xunfeng 是一个用于 Go 语言开发的 Web 框架。适合在 Go 语言开发的 Web 应用中使用,提供丰富的中间件和模块化架构。特点是提供了简洁的 API、自动化路由和易于扩展的插件体…

作者头像 李华
网站建设 2026/6/15 14:15:18

(Open-AutoGLM月活奇迹背后):中国自研大模型如何打破增长瓶颈

第一章:Open-AutoGLM月活奇迹的崛起 在生成式AI快速演进的浪潮中,Open-AutoGLM以惊人的用户增长曲线成为开源社区关注的焦点。其月活跃用户数在发布后的三个月内突破百万,展现出强大的技术吸引力与社区凝聚力。这一现象的背后,是…

作者头像 李华
网站建设 2026/6/15 13:52:51

Promise 对象:优雅解决回调地狱

在现代 JavaScript 编程中,异步操作无处不在,例如网络请求、文件读取等。早期,处理异步操作主要依靠回调函数,但随着业务逻辑变得复杂,回调函数嵌套会形成所谓的“回调地狱”,使代码难以阅读和维护。Promis…

作者头像 李华
网站建设 2026/6/15 13:34:33

微信小程序即时通讯功能快速集成终极指南

微信小程序即时通讯功能快速集成终极指南 【免费下载链接】wechat-im 微信小程序即时通讯模板,使用WebSocket通信 项目地址: https://gitcode.com/gh_mirrors/we/wechat-im 想要为你的微信小程序添加专业级聊天功能吗?wechat-im模板让即时通讯集成…

作者头像 李华