Spring框架下的RESTful风格重构

前言

REST,即“表现层状态转移”,它确立了互联网软件服务的架构规则。若一个架构契合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代码如下:

@RestController
@RequestMapping("/user")
public class UserController {
    //根据id获取用户信息
    @GetMapping("/{id}")
    public Result get(@RequestParam Integer id){
        //业务逻辑
        return Result.success();
    }
    //添加用户
    @PostMapping
    public Result add(@RequestBody User user){
        //业务逻辑
        return Result.success();
    }
    //修改用户信息
    @PutMapping
    public 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();
    }
}

文章整理自互联网,只做测试使用。发布者:Lomu,转转请注明出处:https://www.it1024doc.com/12638.html

(0)
LomuLomu
上一篇 2025 年 6 月 25 日
下一篇 2025 年 6 月 25 日

相关推荐

  • 当代CPU性能剖析的5种优化路径

    文章标题:当代CPU性能剖析的五种优化途径 5 性能分析办法 当你开展高级优化工作,比如将更优算法整合进应用程序时,往往能轻易察觉性能是否提升,因为基准测试结果通常很明晰。从性能剖析角度看,像2倍、3倍这样的大幅提速较为显著。当你从程序中删除大量计算时,预期能看到运行时间的明显变化。 然而,在某些情形下,当你看到执行时间有细微变化,例如5%时,却不明其缘由。…

    2025 年 6 月 19 日
    31400
  • 深度解读 JDK 8、JDK 11、JDK 17 和 JDK 21 的区别

    “`markdown 随着Java生态系统的持续发展,每个新发布的JDK版本都带来了众多新特性、改进和性能优化。对于Java开发者来说,掌握这些不同版本间的差异对于在项目中选择最合适的JDK版本至关重要。本文将深入探讨JDK 8、JDK 11、JDK 17和JDK 21之间的主要差异,帮助你洞察每个版本的变化及其对开发实践的影响。 一、JDK 8:Java…

    未分类 2024 年 12 月 27 日
    90100
  • IntelliJ IDEA 永久破解教程适用于 2025.3

    这篇教程兼容IDEA、PyCharm、DataGrip、Goland等JetBrains系列软件,全家桶用户都能用! 话不多说,先展示最新版IDEA破解成功的截图,可以看到有效期已经到2099年了,非常爽! 下面我会通过图文详解的方式,教大家如何将IDEA激活到2099年。这个激活方案对旧版本同样有效!无论你使用什么操作系统或软件版本,我都准备好了对应的资源…

    IDEA破解教程 2026 年 1 月 10 日
    35800
  • 2025年最新DataGrip激活码与永久破解教程(支持2099年)

    前言 本教程适用于JetBrains系列数据库管理工具DataGrip,同时也兼容其他JetBrains产品如PyCharm、IDEA等。以下是DataGrip成功破解至2099年的效果展示: 本文将详细讲解如何永久激活DataGrip数据库管理工具,该方法对历史版本同样有效。 适用环境说明:- 支持Windows、MacOS和Linux主流操作系统- 适配…

    DataGrip激活码 2025 年 7 月 22 日
    50200
  • 下班后再用ChatGPT,买 Plus 还是 Pro?副业型用户别只看月费

    很多国内用户会以为,自己白天有正式工作,只在晚上用 ChatGPT 两三个小时,就没必要认真比较 ChatGPT Plus订阅 和 ChatGPT Pro订阅。这个结论往往并不准确,因为副业型使用最特殊的地方不是总时长短,而是时间块特别集中:你可能下班后八点才打开电脑,但那两小时里要同时写文案、改简历、做表格、写脚本、准备第二天汇报,容错空间其实比全职使用还…

    ChatGPT 2026 年 4 月 13 日
    9400

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信