RESTful接口规范

RESTful接口规范

2026年9月20日·#编程学习/python学习笔记Python/Web开发·680 字 3 分钟
浏览量加载中...
AI 摘要

REST 架构风格:用 URL 定位资源、用 HTTP 动词描述操作,以及传统风格与 REST 风格接口的对比

RESTful 是什么#

Restful 指的是遵循 REST 架构风格的 API 接口服务,而 REST(REpresentational State Transfer,表述性状态转换)是一种软件架构风格。

它解决的是”接口怎么起名字”的问题:

传统风格 url请求方式含义备注
/user/getById?id=1GET查询 id 为 1 的用户不规范、难维护
/user/saveUserPOST新增用户
/user/updateUserPOST修改用户
/user/deleteUser?id=1GET删除 id 为 1 的用户
REST 风格 url请求方式含义
/users/1GET查询 id 为 1 的用户
/usersPOST新增用户
/usersPUT修改用户
/users/1DELETE删除 id 为 1 的用户

两条核心特点#

  1. URL 定位资源:地址里只写”操作哪个资源”,不写动作(所以不出现 getByIdsaveUser 这类动词)
  2. HTTP 动词描述操作:具体做什么由请求方式决定
请求方式操作
GET查询
POST新增
PUT修改
DELETE删除
Note

两个容易踩的点: ① REST 是风格、是约定,不是规定——约定可以打破。 ② 描述”功能模块”通常用复数形式(加 s)表示这一类资源而非单个资源:usersbooksitems

本项目用到的接口(对照理解)#

接口方式含义
/api/sessionsPOST新建会话
/api/sessionsGET获取会话列表
/api/sessions/{id}GET查询指定会话
/api/sessions/{id}DELETE删除指定会话
/api/chatPOST与 AI 交互(提交一条消息)

相关#

练习题#

一、回忆填空(写完再展开对答案)#

  1. REST 全称 ____,中文 ____,它是一种软件 ____
  2. REST 的两条特点:用 ____ 定位资源,用 ____ 描述操作
  3. 四种请求方式对应的操作:GET ____、POST ____、PUT ____、DELETE ____
  4. 描述功能模块时通常用 ____ 形式(如 users、books)
  5. REST 是 ____(风格/规定),约定 ____(可以/不可以)打破
填空答案(做完再点开)
  1. REpresentational State Transfer / 表述性状态转换 / 架构风格 2. URL / HTTP 动词 3. 查询 / 新增 / 修改 / 删除 4. 复数 5. 风格 / 可以

二、概念与动手#

  • 2-1/book/getBookById?id=5/book/addBook/book/delete?id=5 三个传统接口改写成 REST 风格
  • 2-2 一个”学生管理”系统要支持:查列表、查单个、新增、修改、删除,写出 5 个 REST 接口(路径 + 方式)
  • 2-3 为什么 DELETE 用 /users/1 而不是 /users/delete/1?(用”URL 定位资源”这句话解释)
参考答案(做完再点开)

2-1

GET /books/5 查询 id 为 5 的图书
POST /books 新增图书
DELETE /books/5 删除 id 为 5 的图书

2-2

GET /students 查询列表
GET /students/{id} 查询单个
POST /students 新增
PUT /students/{id} 修改
DELETE /students/{id} 删除

2-3 因为 URL 只负责定位资源(“要操作 id 为 1 的那个用户”),“要做什么”由 HTTP 动词(DELETE)表达。把动作塞进 URL 里(/users/delete/1)就退化成了传统风格,又多又乱。

评论区

[ 标签 ]
# AI37# AI 编程2# AI工具1# Ajax2# Apifox1# AstrBot3# Astro2# CC Switch1# CDN2# Claude Code1# claudecode2# ClaudeCode1# Cloudflare2# CloudFlare2# CloudFlare-ImgBed3# coc3# CSS6# DeepSeek6# deepseek2# DELETE1# Docker1# EdgeOne3# Gist1# git1# GitHub1# hexo-circle-of-friends1# HTML6# HTTP5# ImageManager1# Java23# java13# JavaScript5# JDBC3# JSON2# JUnit1# LangChain25# Logback1# Maven6# Muse Spark1# Mybatis1# MyBatis4# MySQL28# MySql1# NapCat1# Node.js1# obsidian2# Obsidian5# OpenCode4# ORM1# PathVariable1# PicGo1# PyCharm1# Python65# RequestBody1# RequestMapping1# RESTful风格1# skills1# Slf4j1# SpringBoot11# SQL2# Streamlit5# Svelte2# TailwindCSS1# Telegram3# Tlias2# Vercel1# vscode2# Vue7# Waline3# WebDAV1# Web基础6# Web开发6# WinSCP1# YAML1# 三层架构1# 中二宣言1# 书籍1# 使用文档10# 写作1# 函数2# 刷步数1# 前端32# 动态1# 动漫1# 包1# 单词2# 博客7# 博客工作流1# 博客开发2# 参数接收1# 友链1# 反思2# 图床6# 地图1# 备份2# 大模型1# 奇思妙想1# 存储1# 学习方法6# 学校1# 宝塔面板3# 宝宝10# 对象1# 导航栏1# 工具2# 开发1# 开发工具1# 开发规范1# 开心1# 异常处理1# 影视2# 微信1# 性能优化2# 总结1# 想法15# 感受1# 感悟11# 指南1# 提示词工程1# 插件5# 故障排除1# 效率工具2# 教程10# 数据分析9# 数据库27# 数据结构1# 文件操作2# 斩神1# 日常92# 日志框架1# 朋友圈1# 朱元璋1# 模块1# 模板1# 正则表达式2# 测试1# 游戏2# 爬虫7# 生活迁移1# 电影2# 电脑1# 碎碎念1# 视觉识别1# 类1# 类型注解1# 网络基础2# 网络教室1# 羊毛2# 脚本2# 脚本工具1# 自动化2# 蓝奏云1# 订阅推荐2# 记录2# 评论系统1# 词根1# 词缀1# 说说1# 足迹1# 跑步2# 路径参数1# 转载2# 运动1# 部落冲突1# 配置1# 随机图1# 面向对象5# 音乐3# 音标1# 饮食1# 驼峰命名1# 高德地图1
[ 公告 ]

如果你喜欢,那么欢迎来到我的世界!

了解更多
[ 音乐 ]
封面

音乐

暂未播放

0:000:00
暂无歌词
找不到相关结果。
[ contents ]
[ 全部文章 ]