【Spring】RESTful设计风格

ops/2024/11/25 14:46:00/

前言   

        REST(Representational State Transfer),即“表现层状态转移”,它定义了互联网软件服务的架构原则。如果一个架构的符合 REST 原则,就被称之为 RESTful 架构,这是目前最流行的互联网软件服务架构设计风格之一。

REST 并不是一种标准,而更像是一种架构理念和设计原则,目的是为了让 Web API更加简洁、易于理解和使用

在开发过程中,后端时常需要向客户端提供API接口进行使用,在设计API接口时我们就需要尽可能让客户端能够快速理解API含义。如果在设计时遵守一定的规范,就能大大减少前后端沟通成本,提高开发效率了。

一、RESTful的特点

RESTful主要有以下几个特点:

1、同一资源使用同一个URI

2、规范统一接口☆

3、同一资源有多样表现形式(json/html)

4、客户端与服务端的请求交互是无状态的

5、可缓存(允许客户端缓存响应的内容)

无状态

http请求本身是无状态的,它是基于 client-server 架构的。每个请求从客户端到服务器必须包含所有必要的信息,以便服务器能够理解请求并独立地处理它。这意味着服务器不应该存储任何会话信息,无法从一次请求中获取之前请求的任何信息。

规范统一接口

让我们先来举个简单的例子。

比如传统开发要实现一个删除功能,其路径可能是下面这样:

GET  http://localhost:8080/delete?id=20

而采用RESTful设计风格的路径则是这样的:

http://localhost:8080/users/20

怎么样看着是不是清爽很多。传统方式针对同一资源进行增删查改就可能需要四个不同的接口,维护起来并不方便。而RESTful主要特点就是通过资源进行分组,同一组别的系统组件之间的交互通过统一的接口进行。

比如针对用户的操作都由 users 这一URI(统一资源标识符)进行标识,获取、创建、更新、删除都通过统一的路径进行访问。那么服务端又该如何对不同操作进行区分呢?

通过规定使用标准的HTTP方法来执行操作,常见的方法有:

  • GET:获取资源。
  • POST:创建新资源。
  • PUT:更新现有资源。
  • DELETE:删除资源。
  • PATCH:对资源进行部分修改。

也就是说,使用RESTful规范后,针对统一资源操作的API就只剩一个了。要执行增删查改的操作,只需要使用不同的请求类型(HTTP Method)就行了。并且服务端返回的数据也可以是完全一致的,前端可以通过不同的HTTP状态码来判断请求是否成功。

二、Spring中实现RESTful API

Spring Boot 提供了对RESTful API的支持。主要通过与REST操作方式对应的注解来实现:

  • @GetMapping:处理GET请求,获取资源
  • @PostMapping:处理POST请求,新增资源
  • @PutMapping:处理PUT请求,更新资源
  • @DeleteMapping:处理DELETE请求,删除资源
  • @PatchMapping:处理PATCH请求,用于更新部分资源

在RESTful规范中,每个网址对应一个资源,因此在对URI命名时尽量采用名词,并且一般都与数据库的表明相对应。

比如用户管理模块的API就可以这么设定:

对应的Spring Boot代码就是:

java">@RestController
@RequestMapping("/user")
public class UserController {//根据id获取用户信息@GetMapping("/{id}")public Result get(@RequestParam Integer id){//业务逻辑return Result.success();}//添加用户@PostMappingpublic Result add(@RequestBody User user){//业务逻辑return Result.success();}//修改用户信息@PutMappingpublic Result update(@RequestBody User user){//业务逻辑return Result.success();}//修改用户的某个参数,如密码、头像等@PatchMapping("/password")public Result updateAvatar(@RequestParam String password){//业务逻辑return Result.success();}//根据id删除用户@DeleteMapping("/{id}")public Result delete(@RequestParam Integer id){//业务逻辑return Result.success();}
}

那么本篇文章就到此为止了,如果觉得这篇文章对你有帮助的话,可以点一下关注和点赞来支持作者哦。如果有什么讲的不对的地方欢迎在评论区指出,希望能够和你们一起进步✊


http://www.ppmy.cn/ops/136597.html

相关文章

深度学习中的循环神经网络(RNN)与时间序列预测

一、循环神经网络(RNN)简介 循环神经网络(Recurrent Neural Networks,简称RNN)是一种专门用于处理序列数据的神经网络架构。与传统神经网络不同,RNN具有内部记忆能力,能够捕捉数据中的时间依赖…

(免费送源码)计算机毕业设计原创定制:Java+SSM+JSP+Ajax+MySQLSSM国外鞋服代购平台

摘 要 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,鞋服代购平台当然也不例外。代购平台是以实际运用为开发背景,运用软件工程原理和开发方法,采用…

深度学习1

一、库的安装 1、cuda/cpu cuda 有最好&#xff0c;没有无需额外安装&#xff1b;cpu无需其他操作&#xff0c;直接进入下面步骤 查看 nvidia 驱动版本&#xff1a;cmd里面&#xff0c;输入nvidia-smi 查看GPU驱动程序版本 CUDA Version位置&#xff08;保证CUDA版本号<GPU…

Odoo :免费且开源的农牧行业ERP管理系统

文 / 开源智造Odoo亚太金牌服务 引言 提供农牧企业数字化、智能化、无人化产品服务及全产业链高度协同的一体化解决方案&#xff0c;提升企业智慧种养、成本领先、产业互联的核心竞争力。 行业典型痛点 一、成本管理粗放&#xff0c;效率低、管控弱 产品研发过程缺少体系化…

ApiChain 从迭代测试用例到项目回归测试 核心使用教程

项目地址&#xff1a;ApiChain 项目主页 环境变量 环境变量是在特定的开发环境&#xff08;开发、测试、uat等&#xff09;下&#xff0c;保存的一份数据集&#xff0c;环境变量是发送网络请求或者执行单测的一个重要数据源。环境变量根据作用范围可以分为全局环境变量、项目…

OAuth2资源服务器白名单接口带token被拦截

在资源服务器的配置中&#xff0c;添加了请求白名单&#xff0c;如下 Configuration EnableResourceServer public class ResourceServerConfig extends ResourceServerConfigurerAdapter {Autowiredprivate OAuth2Properties properties;Overridepublic void configure(HttpSe…

超高流量多级缓存架构设计!

文章内容已经收录在《面试进阶之路》&#xff0c;从原理出发&#xff0c;直击面试难点&#xff0c;实现更高维度的降维打击&#xff01; 文章目录 电商-多级缓存架构设计多级缓存架构介绍多级缓存请求流程负载均衡算法的选择轮询负载均衡一致性哈希负载均衡算法选择 应用层 Ngi…

C++设计模式之适配器模式与桥接模式,装饰器模式及代理模式相似点与不同点

适配器模式、桥接模式、装饰器模式和代理模式在形式上有一些相似之处&#xff0c;因为它们都涉及到对类的功能或接口的修改、增强或转换。然而&#xff0c;它们在动机和目的上有着显著的不同。以下是对这些模式相似点和不同点的清晰说明&#xff1a; 相似点&#xff1a; 结构…