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

什么是 RESTful 风格?

一、什么是 REST ?

REST即表述性状态传递(英文:Representational State Transfer,简称REST)是Roy Thomas Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。它是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。

  • Representation(资源的表述):资源的表述指的是资源在某个特定时刻的状态的描述,即资源的具体表现形式,它可以有多种格式,例如 HTML、XML、JSON、纯文本、图片、视频、音频等等。
  • State Transfer(状态转移):资源状态转移,简单点说就是,客户端与服务端进行交互时,资源从一种表现形式转换到另一种表现形式的过程。但是 HTTP 协议是一种无状态协议,它是无法保存任何状态的,因此如果客户端想要获取服务器上的某个资源,就必须通过某种手段让资源在服务器端发生“状态转化”。

二、什么是 RESTful 风格?

1、传统方式

在传统的项目开发中,我们通常都会将操作资源的动词写进 URL 中,而这些动词通常都是我们自行定义的,并没有一个统一的规范。哪怕是对同一资源的相同操作,不同的人所定义的 URL 也是各不相同的。比如获取用户信息:

  • http://localhost:8080/getUserById?id=1
  • http://localhost:8080/user/getById?id=1
  • http://localhost:8080/findUserById?id=1

2、RESTful 风格

(1)什么是RESTful ?

REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。

(2)如何设计 RESTful API ?

API(应用程序编程接口)是一组规则,用于定义应用程序或设备如何相互连接和通信。 REST API 是符合 REST(表述性状态转移)架构样式设计原则的 API。 因此,REST API 有时被称为 RESTful API。

RESTful提倡我们使用统一的风格来设计 URL,其规则如下:

1. URL(对应资源

  • URL 只用来标识和定位资源,不得包含任何与操作相关的动词,只包含名词即可,而且所用的名词往往与数据库的表名对应。
    示例:http://localhost:8080/biancheng/user

  • 当请求中需要携带参数时,RESTFul 允许我们将参数通过斜杠(/)拼接到 URL 中,将其作为 URL 的一部分发送到服务器中,而不再像以前一样使用问号(?)拼接键值对的方式来携带参数。
    示例:http://localhost:8080/biancheng/user/1

2. HTTP Method(对应状态转移

  • HTTP 协议中有四个表示操作方式的动词:GET、POST、PUT 和 DELETE,它们分别对应了四种与资源相关的基本操作: GET 用来获取资源, POST 用来新建资源, PUT 用来更新资源, DELETE 用来删除资源。客户端通过这四个动词,即可实现对服务器端资源状态转移的描述。
    示例:GET、POST、PUT 和 DELETE

RESTful 将对资源的操作都定义在HTTP Method 中,使得URL地址看起来更简洁。

3、传统方式 vs RESTful 风格

资源操作传统方式RESTful 风格
传统方式 URLHTTP 请求方式RESTful URLHTTP 请求方式
获取资源(Read)http://localhost:8080/biancheng/getUserById?id=1GEThttp://localhost:8080/biancheng/user/1GET
保存或新增资源(Create)http://localhost:8080/biancheng/saveUserPOSThttp://localhost:8080/biancheng/userPOST
修改或更新资源(Update)http://localhost:8080/biancheng/updateUserPOSThttp://localhost:8080/biancheng/userPUT
删除资源(Delete)http://localhost:8080/biancheng/deleteUser?id=1GEThttp://localhost:8080/biancheng/user/1DELETE

附录

参考:RESTful(REST风格)是什么
RESTful(REST风格)是什么

参考来源

  • RESTful(REST风格)是什么
  • RESTful_百度百科
  • 什么是 REST API? - 中国 | IBM

相关文章:

什么是 RESTful 风格?

一、什么是 REST ? REST即表述性状态传递(英文:Representational State Transfer,简称REST)是Roy Thomas Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。它是一种针对网络应用的设计和开发方式&#…...

从业6年,对敏捷和自动化测试的一点心得

不久前,参加Thoughtworks组织的一场自动化测试的分享,同事由于出差国外不能参加,特意嘱托我提问两个问题: 在互联网这个将“敏捷”与“持续集成”进行积极实践的环境里,“敏捷测试”与“自动化测试”成了一个大家经常…...

ThreeJS 之界面控制

文章目录参考描述界面自适应问题resize 事件修改画布大小修改视锥体的宽高比全屏显示dblclick 事件检测全屏显示状态进入全屏显示状态退出全屏显示状态尾声参考 项目描述ThreeJS官方文档哔哩哔哩老陈打码搜索引擎BingMDN 文档document.mozFullScreenElementMDN 文档Element.re…...

【查找算法】解析学习四大常用的计算机查找算法 | C++

第二十二章 四大查找算法 目录 第二十二章 四大查找算法 ●前言 ●查找算法 ●一、顺序查找法 1.什么是顺序查找法? 2.案例实现 ●二、二分查找法 1.什么是二分查找法? 2.案例实现 ●三、插值查找法 1.什么是插值查找法? 2…...

Android实例仿真之一

目录 零 开局三问 第一问:为什么要有这一章? 第二问:Android算不算是一个嵌入式系统? 第三问:用什么方法来分析Android这个大系统? 一 讨论Android的流行 二 深入浅出Android 零 开局三问 在正式开始…...

软考高级-信息系统管理师之重要工具和技术的口语化表示(最新版)

重要工具和技术的口语化表示 本文主要介绍重要工具和技术的口语化解释 1、 模板、表格和标准:就是用之前的项目的模版、表格、标准,结合本项目进行了修改,在编制一些计划、方案的时候就可以采用这个工具和技术。可以拿来就用的,节约时间、提高质量的。 2、 产品分析:通过一…...

基于springboot+vue的个人健康信息服务平台

基于springbootvue的个人健康信息服务平台 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背…...

SpringBoot2.x实战专题——SpringBoot2 多配置文件【开发环境、测试环境、生产环境】

SpringBoot2.x实战专题——SpringBoot2 多配置文件【开发环境、测试环境、生产环境】 目录SpringBoot2.x实战专题——SpringBoot2 多配置文件【开发环境、测试环境、生产环境】一、创建一个SpringBoot项目二、修改pom.xml中SpringBoot的版本三、配置文件3.1 application-dev.ym…...

测试2:编写测试用例的方法

2.编写测试用例的方法 7种 测试常用的方法:code review 代码静态分析、CI/CD CI–持续集成–开发成员经常集成它们的工作,尽快发现集成错误 CD–持续部署–将集成后的代码部署到更贴近真实运行的环境 2.1 测试用例的描述: 用例编号 用例…...

docker安装配置镜像加速器-拉取创建Mysql容器示例

List item docker 常见命令大全docker安装docker拉取创建Mysql容器docker 安装 1、安装链接:https://blog.csdn.net/BThinker/article/details/123358697 ; 2、安装完成需要配置docker镜像加速器 3、docker 镜像加速器推荐使用阿里云的: 编…...

WSL1和WSL2相互转换以及安装路径迁移相关问题

目录 1.从WSL 1如何切换到WSL 2? 2.从WSL 2如何切换回WSL 1? 3.WSL1转换为WSL2后,WSL1里面安装的程序和库需要重装吗? 4.WSL2转换为WSL1后,WSL2里面安装的程序和库需要重装吗? 5.如何备份WSL2&#xf…...

系统分析*

文章目录系统分析分析的任务结构化方法OO的方法的任务常用的详细调查方法有哪些?系统分析的建模TFD业务流程图DFDDD数据流图用例模型(重点用例图)用例图的内容:用例之间的关系:对象模型(类图)时…...

【redis】持久化:RDB和AOF

redis的持久化指将数据写入可靠内存中,如ssd。Redis提供了4种持久化策略 RDB:Redis Database,周期性的将某个时间点的数据集快照持久化AOF:Append Only File,每次redis服务接收到写操作(修改内存的操作),都…...

2023Python接口自动化测试实战教程,附视频实战讲解

这两天一直在找直接用python做接口自动化的方法,在网上也搜了一些博客参考,今天自己动手试了一下。 一、整体结构 上图是项目的目录结构,下面主要介绍下每个目录的作用。 Common:公共方法:主要放置公共的操作的类,比如数据库sql…...

【原创】java+swing+sqlserver药品管理系统设计与实现

之前数据库都是用的mysql,今天我们使用sqlserver在配合swing来开发一个药品管理系统。方便医院工作人员进行药品的管理,基础功能基本都是一些增删改查操作。 功能分析: 药品管理系统主要提供给管理员和员工使用,功能如下&#x…...

软考高级信息系统项目管理师系列之二十七:信息文档管理与配置管理

软考高级信息系统项目管理师系列之二十七:信息文档管理与配置管理 一、信息文档管理与配置管理内容整理二、信息系统文档管理1.信息系统文档概念2.软件文档分类与质量等级三、配置管理1.配置管理2.典型配置项3.配置项4.配置项操作权限5.配置项状态6.配置项版本号7.配置项版本管…...

软考高级-信息系统管理师之项目管理基础(最新版)

项目管理基础 项目管理特点战略管理三个过程IT项目特点项目管理概念项目管理特点软技能PRINCE2的四个要素组织结构职能型组织优缺点职能型组织优点同时,职能型组织也存在着如下缺点:项目型组织优缺点项目型组织优点项目型组织也存在着如下缺点:矩阵型组织优缺点矩阵型组织的优…...

leetcode240+Search a 2D Matrix II+从右上角开始

链接 class Solution { public:bool searchMatrix(vector<vector<int>>& matrix, int target) {if(matrix.size()0 || matrix[0].size()0) return false;int i0, jmatrix[0].size()-1; //从右上角开始while (i<matrix.size()&&j>0) {int x mat…...

0xL4ugh 2023

这回跟着个队伍跑&#xff0c;不过还是2X以后的成绩&#xff0c;前边太卷了。自己会的部分&#xff0c;有些是别人已经提交了的。记录一下。Cryptocrypto 1给了一些数据&#xff0c;像这样就没有别的了ct [0, 1, 1, 2, 5, 10, 20, 40, 79, 159, 317, 635, 1269, 2538, 5077, 1…...

Mybatis(4)之跟着老杜做一个简单的银行转账会话

这是个MVC项目&#xff0c;我不一定可以完整的实现这个项目&#xff0c;但力求把这个复现出来&#xff0c;尽量的复现细节。 第一步&#xff1a;创建数据库 表 创建表如下&#xff1a; 我们使用 int 是为了方便 然后采用 demcial&#xff0c;精确度较高 添加两个用户 然后…...

抖音下载神器:如何一键批量保存无水印视频和音乐?

抖音下载神器&#xff1a;如何一键批量保存无水印视频和音乐&#xff1f; 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallbac…...

Airbyte质量保证终极指南:10个关键策略确保数据管道代码质量与测试覆盖

Airbyte质量保证终极指南&#xff1a;10个关键策略确保数据管道代码质量与测试覆盖 【免费下载链接】airbyte Open-source data movement for ELT pipelines and AI agents — from APIs, databases & files to warehouses, lakes, and AI applications. Both self-hosted …...

Freewall深度解析:揭秘高性能网格布局引擎的实现原理

Freewall深度解析&#xff1a;揭秘高性能网格布局引擎的实现原理 【免费下载链接】freewall kombai/freewall: Freewall 是一个灵活、响应式的网格布局引擎&#xff0c;可用于创建具有自适应布局功能的网页或应用组件&#xff0c;尤其适合于图片墙、瀑布流布局等场景。 项目地…...

通过Taotoken模型广场快速为项目选择合适的AI模型

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 通过Taotoken模型广场快速为项目选择合适的AI模型 当你开始一个新项目&#xff0c;或者需要为现有应用集成AI能力时&#xff0c;面…...

2000-2024年上市公司产学研合作数据

产学研合作&#xff08;University-Industry Collaboration, UIC&#xff09;是衡量企业与高校及科研机构协同创新程度的核心指标。本数据集基于中国上市公司年度报告中披露的客户及合作方清单构建&#xff0c;由团队依据公开披露信息测算&#xff0c;时间覆盖20002024年。核心…...

嵌入式数据流解析与LED动画驱动:从协议设计到nRF52840实战

1. 项目概述&#xff1a;从数据流到动画精灵的眼睛在嵌入式硬件开发里&#xff0c;尤其是像可穿戴设备、互动艺术装置这类项目&#xff0c;我们常常面临一个核心矛盾&#xff1a;设备需要处理来自外部&#xff08;比如蓝牙、串口&#xff09;源源不断的指令数据&#xff0c;同时…...

StackEdit v6.0.7发布:懒加载、图片查看等功能升级,优化Markdown编辑体验

StackEdit v6.0.7&#xff1a;多维度功能升级StackEdit v6.0.7正式发布&#xff0c;此次更新涵盖了多个重要功能。在组件加载方面&#xff0c;优化非常用的组件为懒加载方式&#xff0c;这能有效提升编辑器的加载速度和性能。在线离线判断也得到调整&#xff0c;让用户在不同网…...

AI推理模型工程2026:从o3到DeepSeek-R1的工程化落地实践

推理模型&#xff08;Reasoning Model&#xff09;正在重新定义AI应用的边界。当OpenAI o3在ARC-AGI测试上突破人类基准&#xff0c;当DeepSeek-R1以极低成本实现顶级推理能力&#xff0c;工程师们面临的问题已经不是"推理模型能做什么"&#xff0c;而是"怎么把…...

3步掌握微信聊天记录导出:永久保存珍贵回忆的免费工具

3步掌握微信聊天记录导出&#xff1a;永久保存珍贵回忆的免费工具 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 你是否曾担心更换手机后&#xff0c;那些珍贵的微信聊天…...

【收藏备用】2026年后端转Agent必看!大厂疯抢+高薪指南,小白/程序员入门不踩坑

2026年&#xff0c;技术圈的风口毫无疑问被AI Agent牢牢占据。无论是大厂内部的技术布局风向&#xff0c;还是春招、社招释放的海量岗位&#xff0c;几乎清一色指向Agent开发领域&#xff0c;成为全年最值得关注的技术赛道。 在这股不可逆的技术浪潮下&#xff0c;不少还在重复…...