【RESTful风格是什么,如何设计】

#王者杯·14天创作挑战营·第1期#

RESTful风格是什么,如何设计

提示:帮帮志会陆续更新非常多的IT技术知识,希望分享的内容对您有用。本章分享的是springboot的使用。前后每一小节的内容是存在的有:学习and理解的关联性。【帮帮志系列文章】:每个知识点,都是写出代码和运行结果且前后关联上的去分析和说明(能大量节约您的时间)。

所有文章都*不会*直接把代码放那里,让您自己去看去理解。我希望我的内容对您有用而努力~



本文章是系列文章,技术栈内容为:【springboot+vue】【前后分离】
【详细图文,实操步骤分享,节约时间版】。最终完成一个商业化项目。内容有:
springboot知识
mybatisPlus知识
vue知识
node.js知识

本小节的内容是
springboot篇章 之 : RESTful风格是什么,如何设计

本小节-是附小节。主要章节是:【多种不同提交方式】通过springboot实现与前端网页数据交互
因为交互的时候,需要用到get post put delete 提交方式。而作为前后分离项目,前端开发和后端开发都需要遵守一个约定和规则,这个就是RESTful



【2025年】基于电脑的jdk1.8通过idea创建springboot2.x版本(非常简洁快速)
【上榜文章,一文搞定】现在springboot是3.x以上版本,jdk版本至少要求17.但是很多时候我们电脑是jdk1.8(求稳定性和安全性)。文本分享本机电脑1.8的jdk。idea如何非常简洁快速的创建springboot
文章里面也有 为什么只能是jdk17起和地址指定为阿里云报错的解决办法

springboot实现与前端网页数据交互,包括:get post put delete。和不同的注解语法及前端取值和后台传值。


一、简介

RESTful API 是一种基于 HTTP 协议的应用程序接口设计风格,常用于构建网络服务和应用程序。它提供了一种通过标准化的操作和资源访问模式进行客户端与服务器通信的方式。

二、RESTful的核心概念

1.资源(Resource):
RESTful API 中的每一个对象、实体或数据都被抽象为一个资源。例如,用户、文章 等都可以作为资源。每个资源都通过一个唯一的 URI(统一资源标识符)标识

2.URI(统一资源标识符):
URI 是用于标识资源的地址。RESTful API 中,通常使用 URL(统一资源定位符)作为 URI。例如:

/users/111 表示 id 为 111 的用户资源
/student/666 表示 id 为 666 的学生资源

摈弃了原有的url书写方式: 地址?名称=值&名称=值
改为了: 地址/值/值/值 变的比较安全。至于每个位置对应什么,即前端和后端的内部约定,在swagger里面说明

3.HTTP 动作(HTTP Methods):
RESTful API 依赖于 HTTP 协议的常见方法来对资源进行操作,每个 HTTP 方法对应不同的操作:
GET:获取服务器上的资源。
POST:在服务器上创建新的资源。
PUT:更新服务器的上的资源。
DELETE:删除服务器上的资源。

4.无状态(Statelessness):
RESTful API 是无状态的。每个请求都应该是独立的,服务器不会在请求之间保存客户端的状态。

5.表现层状态转移(Representational State Transfer):
资源的表现形式可以是 JSON、XML、HTML 等格式,通常 RESTful API 使用 JSON 作为数据交换格式,因为它轻量且易于解析。


三、设计原则

1.使用 HTTP 方法来描述操作:
根据请求的动词(重要)(如 GET、POST、PUT、DELETE)来决定要对资源执行什么操作

2.使用 URL 来标识资源:
URI 应简单且表达明确。例如 /posts/1 应该代表 id 为 1 的文章。

3.状态无关性:
每个请求必须包含所有的信息,服务器不会依赖客户端的请求历史记录来处理当前的请求。

4.支持不同的数据格式:
通常支持 JSON 和 XML 格式,JSON 因其简洁性在 RESTful API 中被经常使用。
JSON 格式的响应:

如:
学生 资源定义唯一的 URL。学生 应当使用复数名词,以表明它是资源集合的一部分。

GET提交,地址是 : /students 表示: 获取所有学生。
GET提交,地址是 : /students/1 表示: 获取 id 为 1 的学生。
POST提交,地址是 : /students 表示: 创建一个新的学生。(post隐式提交,数据在请求头里面,url看不见)
PUT提交,地址是 : /students/1 表示: 更新 id 为 1 的学生。
DELETE提交,地址是 : /students/1 —— 删除 id 为 1 的学生。
GET提交,地址是 : /students/1/clazzs —— 获取学生 id 为 1 的教室信息。(class关键字,一般教室班级我们是clazz)
前端和后端的约定 都遵守一个规则
看见 同一个地址 : /students/1
根据提交的方式不一样,后端操作返回的结果完全不一样


能直观的看出提交方式,和具体应该怎么操作。请查阅:
swagger的部署和使用
类似于:
在这里插入图片描述
在前端和后端开发中间,遵循一个原则和规则:RESTful,让开发变的更加简介和方便(前后分离,大家可能位置都没有坐在一起,但是开发同一个项目,配合度又高,A同事没必要给B同事沟通说明半天,后面又去给CDEF同事 又又又讲一遍)。统一:RESTful

也存在一个接口文档:swagger。不同颜色代表不同的提交方式,也可以去编写一些注释和文字来对每个类和每个方法进行详细说明。方便各个开发人员熟知


四、两个特性:安全性和幂等性

安全性:方法是安全的,且不会产生任何副作用。不会因为我希望调用某个方法,而会去思考它会带来其他的什么影响
如:get提交方式,就仅仅获取资源,不会引起资源本身的改变,也不会引起服务器的状态改变

幂等性:保证一次请求和重复进行某一次请求,效果是一样的。(不是指相应总是相同的,如您添加一个资源,又提交了n次,它是会添加n个资源到数据库。这里是:服务器资源的状态)
如:对一个接口发一次请求 和 对同一个接口发一次 一百次请求。 都是一样的。
不好想这个例子,大家可以帮我 想一个来评论 意思是: 这个接口的设计,不会因为发送多次请求,后面的请求就变了,添加嘛还是添加嘛,变的是数据库。又不是接口变了,对吧


总结

说明一下:整个这个系列实现前后分离的springboot+vue项目。序号文章一共也就10几篇,只有核心图文重点操作步骤来实现这个目标(基本上您边看边写:一个小时或者一上午就能跟着一起手搓一个前后分离项目,然后您可以自行添加功能和内容在您项目里面)

其他扩展细节知识点,本系列省略了(或者有链接)如:
RESTful 风格的所有信息,全部写完(有点啰哩巴嗦,且全是理论)(本文快速理解,已经够了。当前留下的都是重要的)。可以移步去查阅帮帮志的其他系列的文章为详细版。这个快速手搓前后分离[springboot+vue]系列没放详细版。不然,光是框架的知识和内容,那已经都多少了,还怎么快速手搓前后分离

(会陆续更新非常多的IT技术知识及泛IT的电商知识,可以点个关注,共同交流。ღ( ´・ᴗ・` )比心)
(也欢迎评论,提问。 我会依次回答~)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值