当前位置: 首页 > news >正文

Restfull API 风格规则以及特点

RESTful API(Representational State Transfer)是一种基于 Web 的 API 设计风格,具有简洁、结构清晰、语义明确等特点,常用于前后端分离的系统中。


一、RESTful API 的核心理念

REST 不是协议,而是一种 设计风格,其核心理念是:

  • 将资源作为核心(Everything is a resource)
  • 通过 HTTP 方法对资源进行操作(使用标准动词)
  • 无状态通信(Stateless)
  • 使用统一接口(Uniform Interface)

二、RESTful API 的命名规则(规范)

1. 资源 URI 命名

  • 使用名词,且一般使用复数形式
  • 避免动词(动作由 HTTP 方法表示)

例如:

GET    /users           获取用户列表
GET    /users/123       获取 ID 为 123 的用户
POST   /users           创建一个新用户
PUT    /users/123       更新 ID 为 123 的用户
DELETE /users/123       删除 ID 为 123 的用户

2. 使用标准 HTTP 方法表示操作

HTTP 方法作用
GET获取资源
POST创建资源
PUT更新资源(整体)
PATCH更新资源(部分)
DELETE删除资源

3. 使用路径层级表达资源之间的关系

GET /users/123/orders         获取用户 123 的所有订单
GET /users/123/orders/456     获取用户 123 的订单 456

4. 使用查询参数表示过滤、排序、分页等

GET /products?category=phone&sort=price_asc&page=2&limit=20

三、RESTful API 的特点

特点描述
资源导向所有内容都被抽象为资源(User、Order、Article 等)
使用标准协议基于 HTTP 协议,直接使用其方法(GET、POST 等)
无状态通信每次请求都包含所有上下文,不依赖服务器保存状态
统一接口接口风格统一、易于理解和使用
可缓存客户端可根据响应头对资源进行缓存,提高性能
分层架构客户端无需知道请求最终由谁处理(例如中间层、负载均衡等)

四、RESTful API 与传统 API 的对比

比较项RESTful API传统 API 风格
接口风格资源导向,结构清晰动作导向,接口混乱
动作表示使用 HTTP 方法表示动作接口路径中包含动词(如 /getUser)
可读性高,可直观理解操作含义低,需要阅读文档才能理解
维护性易于扩展和维护扩展性差,接口膨胀

五、常见 RESTful API 错误码(建议)

状态码含义说明
200OK请求成功
201Created成功创建资源
204No Content请求成功,但无返回内容
400Bad Request请求参数有误
401Unauthorized认证失败
403Forbidden没有权限访问资源
404Not Found资源不存在
500Internal Server Error服务器内部错误

六、什么时候应该用 RESTful?

  • 资源之间关系明确、结构层级清晰
  • 系统需要公开标准 API 供外部系统调用
  • 系统前后端分离,接口要语义化、易于文档化

http://www.xdnf.cn/news/450577.html

相关文章:

  • Linux运维高频词对照表
  • “小显存”也能启动大模型
  • [数据结构]5. 栈-Stack
  • 服务器数据恢复—XFS文件系统分区消失的数据恢复案例
  • 基于.Net开发的网络管理与监控工具
  • 【算法】版本号排序
  • C++笔记-AVL树(包括单旋和双旋等)
  • 微信小程序学习之轮播图swiper
  • DeepSeek:AI助力高效工作与智能管理
  • Qwen3如何强化推理能力?
  • AISBench benchmark评测工具实操-精度评测场景-采用命令行指定模型和数据集的方式
  • ESP系列单片机选择指南:结合实际场景的最优选择方案
  • Jmeter 安装包与界面汉化
  • 【大模型】LLM概念相关问题(中)
  • day014-服务管理
  • Python机器学习笔记(二十二、模型评估-交叉验证)
  • 润金店发布“爱有千斤重“30周年限定爱意礼盒:以东方美学诠释爱的重量
  • elementplus el-tree 二次封装支持配置删除后展示展开或折叠编辑复选框懒加载功能
  • js对象原型,原型链
  • 制作一款打飞机游戏48:敌人转向
  • 嵌入式学习笔记 D20 :单向链表的基本操作
  • 3DMAX脚本病毒Spy CA查杀方法
  • 计算机网络笔记(二十八)——4.10软件定义网络SDN简介
  • 【0415】Postgres内核 释放指定 memory context 中所有内存 ④
  • 5.14 BGP作业
  • Linux操作系统实战:进程创建的底层原理(转)
  • 朱老师, 3518e系列,第三季
  • 【Python】杂乱-[代码]Python 替换字符串中相关字符的方法
  • 容器安全-核心概述
  • OpenCV人脸识别LBPH算法原理、案例解析