【RestFul系列】RestFul学习笔记

news2024/11/24 6:53:00

目录

一、REST定义

二、REST架构的主要原则

三、RESTful介绍

1、资源(Resources)

2、 表现层(Representation)

3、 状态转化(State Transfer)

四、RESTful的使用

1、RESTful资源操作

2、接口示例:

     2.1.传统URL请求格式:

     2.2.RESTful请求格式:

3、响应设计

​4、http响应状态码

五、结语


一、REST定义

REST 是Roy Fielding博士在2000年他的博士论文中提出来的。它是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。REST(Representational State Transfer)表象化状态转变(表述性状态转变),基于HTTP、URI、XML、JSON等标准和协议,支持轻量级、跨平台、跨语言的架构设计。是Web服务的一种新的架构风格(一种思想)。

二、REST架构的主要原则

  • 对网络上所有的资源都有一个资源标志符。

  • 对资源的操作不会改变标识符。

  • 同一资源有多种表现形式(xml、json)

  • 所有操作都是无状态的(Stateless)

三、RESTful介绍

简单的说:RESTful是一种架构的规范与约束、原则,符合这种规范的架构就是RESTful架构。

1、资源(Resources)

REST的名称"表现层状态转化"中,省略了主语。“表现层"其实指的是"资源”(Resources)的"表现层"

所谓"资源",就是网络上的一个实体,或者说是网络上的一个具体信息。它可以是一段文本、一张图片、一首歌曲、一种服务,总之就是一个具体的实在。你可以用一个 URI(统一资源定位符)指向它,每种资源对应一个特定的URI。要获取这个资源,访问它的URI就可以,因此URI就成了每一个资源的地址或独一无二的识别符

所谓"上网",就是与互联网上一系列的"资源"互动,调用它的URL

2、 表现层(Representation)

“资源"是一种信息实体,它可以有多种外在表现形式。我们把"资源"具体呈现出来的形式,叫做它的"表现层”(Representation)

比如,文本可以用txt格式表现,也可以用HTML格式、XML格式、JSON格式表现,甚至可以采用二进制格式;图片可以用JPG格式表现,也可以用PNG格式表现

URI只代表资源的实体,不代表它的形式。严格地说,有些网址最后的".html"后缀名是不 必要的,因为这个后缀名表示格式,属于"表现层"范畴,而URI应该只代表"资源"的位置。它的具体表现形式,应该在HTTP请求的头信息中用Accept和Content-Type字段指定,这两个字段才是对"表现层"的描述

3、 状态转化(State Transfer)

访问一个网站,就代表了客户端和服务器的一个互动过程。在这个过程中,势必涉及到数据和状态的变化

互联网通信协议HTTP协议,是一个无状态协议。这意味着,所有的状态都保存在服务器端。因此,如果客户端想要操作服务器,必须通过某种手段,让服务器端发生"状态转化"(State Transfer)。而这种转化是建立在表现层之上的,所以就是"表现层状态转化"

客户端用到的手段,只能是HTTP协议。具体来说,就是HTTP协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。

它们分别对应四种基本操作:

GET用来获取资源
POST用来新建资源(也可以用于更新资源)
PUT用来更新资源
DELETE用来删 除资源
综合上面的解释,我们总结一下什么是RESTful架构:

每一个URI代表一种资源
客户端和服务器之间,传递这种资源的某种表现层
客户端通过四个HTTP动词,对服务器端资源进行操作,实现 “表现层状态转化”

四、RESTful的使用

1、RESTful资源操作

幂等性:对同一REST接口的多次访问,得到的资源状态是相同的。

安全性:对该REST接口访问,不会使服务器端资源的状态发生改变。

2、接口示例:


2.1.传统URL请求格式:

http://localhost:8080/user/query/1 GET 根据用户id查询用户数据

http://ocalhost:8080/user/save POST 新增用户

http://ocalhost:8080/user/update POST 修改用户信息

http://ocalhost:8080/user/delete GET/POST 删除用户信息

2.2.RESTful请求格式:

http://localhost:8080/user/1 GET 根据用户id查询用户数据

http://localhost:8080/user POST 新增用户

http://localhost:8080/user PUT 修改用户信息

http://localhost:8080/user DELETE 删除用户信息

3、响应设计

原则:数据接收到即可使用,无需拆箱。

在一次请求中,content body仅仅用于传输数据。Header中存放描述请求或请求的元数据,例如 X-Result-Fields。

这里写图片描述


4、http响应状态码

 根据http响应码,判断请求状态,进而做出提醒。

这里写图片描述

 

五、结语

RESTful减少了传统请求的拆装箱操作,结构清晰,在接口定义中受到前后端开发者的青睐。因此,近几年在很多互联网科技公司使用的越来越多。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/448991.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

verilog设计实现8b-10b编码器包括3b4b,5b6b 及modelsim仿真

下面是8b10b编码器的设计步骤。 确定数据输入和输出接口。例如,您需要确定8位并行数据输入和10位串行数据输出。 计算数据带宽。这与芯片中可用的时钟速度密切相关。 选择编码表。根据应用选择最佳编码表,8b10b编码器至少应使用一张编码表。详细了解和选择编码表有利于改善编…

图的存储及基本操作总结(邻接矩阵、邻接表)及C/C++代码实现

文章目录 前言一、邻接矩阵1.概念2.图像示例3. 代码实现注意邻接矩阵的特点 二、邻接表1.概念2.图像示例3.代码实现邻接表的特点 前言 图是一种比较复杂的数据结构,每个结点之间可以有多种关系。 所以,一个图可以呈现出千奇百怪的形式。 对于不同的形式…

使用FFMPEG库将YUV编码为H264

准备 ffmpeg 4.4 p准备一段yuv420p的格式的视频原始数据 这里我们使用命令直接提取 ffmpeg -i .\beautlWorld.mp4 -pixel_format yuv420p -s 1280x720 yuv420p_1280x720.yuv 编码流程 大致可以分为以下几步: 1.初始化编码器并设置参数 2.初始化AVPacket和AVFr…

【Java基础 1】Java 环境搭建

🍊 欢迎加入社区,寒冬更应该抱团学习:Java社区 📆 最近更新:2023年4月22日 文章目录 1 java发展史及特点1.1 发展史1.2 Java 特点1.2.1 可以做什么?1.2.2 特性 2 Java 跨平台原理2.1 两种核心机制2.2 JVM…

Activiti入门

目录 一、了解工作流 1、什么是工作流 2、工作流引擎 3、常见工作流引擎 4、Activiti7概述 4.1、Activiti介绍 4.2、建模语言BPMN 4.3、Activiti使用流程 一、了解工作流 1、什么是工作流 工作流(Workflow),就是通过计算机对业务流…

SSeg总体思路

1:在train中加载train和test数据集。 2:指定数据集为kitti,确定训练验证的batchsize。 3:提前定义好数据预处理,首先是几何变换,包括随机裁切等。 4:然后是外观变换,包括高斯滤波…

计算同列排斥力的一种可能方法

假设神经网络同列数字之间有一种排斥力,且这种排斥力也与距离的平方成反比。设0是环境,1是粒子,则两个1之间的排斥力就是距离平方的倒数。 考虑任意遥远的两个粒子之间都有排斥力,可以得到同列排斥力的计算方法为 如计算"01…

移动硬盘数据恢复软件实用技巧

在我们日常生活中,移动硬盘已经成为了我们不可或缺的存储设备之一。但是,由于各种原因,移动硬盘中的数据有时会丢失或损坏,这时候我们就需要使用移动硬盘数据恢复软件来帮助恢复数据。那么,移动硬盘数据恢复软件有哪些…

Windows环境下实现设计模式——中介者模式(JAVA版)

我是荔园微风,作为一名在IT界整整25年的老兵,今天总结一下Windows环境下如何编程实现中介者模式(设计模式)。 不知道大家有没有这样的感觉,看了一大堆编程和设计模式的书,却还是很难理解设计模式&#xff…

modbus指令测试

目录 一.抓包二.modbus与plc三.usb包分析四.编写modbus指令测试五.调试工具 一.抓包 1.串口抓包?wireshark!: https://xuxeu.github.io/uart-catch/ 2.Windows&Linux USB抓包方法总结:https://zhuanlan.zhihu.com/p/267820933 3.USB The Setup Pack…

(“树” 之 前中后序遍历 ) 94. 二叉树的中序遍历 ——【Leetcode每日一题】

基础概念:前中后序遍历 1/ \2 3/ \ \ 4 5 6层次遍历顺序:[1 2 3 4 5 6]前序遍历顺序:[1 2 4 5 3 6]中序遍历顺序:[4 2 5 1 3 6]后序遍历顺序:[4 5 2 6 3 1] 层次遍历使用 BFS 实现,利用的就是 BFS…

一文搞懂Java中的异常问题

思考几个问题 1:JavaWeb系统中,我的代码未做任何处理,报错了还会往下执行吗? 2:JavaWeb系统中,我的代码做了 try catch finally, 报错了还会往下执行吗? 3:JavaWeb系统中&#xff0c…

软考高频考点--《项目采购管理》

现在离2023年上半年软考还有一个多月的时间,相信各位小伙伴们已经进入紧张的备考状态了。 小编今天为大家整理了软考的一些高频考点–《项目采购管理》,希望对正在备考软考的你有所帮助! 采购是从项目团队外部获得产品、服务或成果的完整的购…

alsa_lib移植到IMX6ULL

简介 ALSA是Advanced Linux Sound Architecture的缩写,目前已经成为了linux下的主流音频体系架构,提供了音频和MIDI的支持。 交叉编译alsa_lib和alsa_utils 下载alsa_lib 在官网中下载AlsaProject 编译 先将文件解压,然后进入alsa_lib…

运筹说 第94期|论文速读之基于关键路径的置换流水车间调度问题

前几期的推送已经讲解了网络计划的基本知识、数学模型和相关算法,相信大家对网络计划已经有了充分的了解,这期小编将带大家一起来读一篇基于关键路径的置换流水车间调度问题的文章。 1.文章信息 题目:An efficient critical path based meth…

手把手教你分析解决MySQL死锁问题

在生产环境中出现MySQL死锁问题该如何排查和解决呢,本文将模拟真实死锁场景进行排查,最后总结下实际开发中如何尽量避免死锁发生。 一、准备好相关数据和环境 当前自己的数据版本是8.0.22 mysql> select version; ----------- | version | --------…

Arduino 多任务软件定时器:Simpletimer库的使用

Arduino 多任务软件定时器:Simpletimer库的使用 📌Simpletimer库Arduino官方介绍信息:https://playground.arduino.cc/Code/SimpleTimer/✨该库也是利用了millis()函数来实现任务轮询的。与之类似的还有ESP8266固件自带的Ticker库,但是Ticker库使用仅限于ESP8266内调用,Si…

Discourse Google Analytics 3 的升级提示

根据 Google 官方的消息: Google Analytics(分析)4 是我们的新一代效果衡量解决方案,即将取代 Universal Analytics。自 2023 年 7 月 1 日起,标准 Universal Analytics 媒体资源将停止处理新的命中数据。如果您仍在使…

linux-01-基础回顾

文章目录 Linux-Day01课程内容1. 前言1.1 什么是Linux1.2 为什么要学Linux1.3 学完Linux能干什么 2. Linux简介2.1 主流操作系统2.2 Linux发展历史2.3 Linux系统版本 3. Linux安装3.1 安装方式介绍3.2 安装VMware3.3 安装Linux TODO3.4 网卡设置3.5 安装SSH连接工具3.5.1 SSH连…

【Python】【进阶篇】1、Django是什么?

目录 1、Django是什么?1. Django的由来2. Django的命名3. Django的版本发布1) 功能版2) 补丁版3) LTS 版本 4. Django框架的特点 1、Django是什么? Django 是使用 Python 语言开发的一款免费而且开源的 Web 应用框架。由于 Python 语言的跨平台性&#…