Spring Boot中的RESTful API详细介绍及使用
在Spring Boot中,RESTful API的实现通过控制器类中的方法和特定的注解来完成。每个注解对应不同的HTTP请求方法,并通过处理请求参数和返回响应来实现不同的操作。
下面将详细解释RESTful API中的各个方面,包括
@GetMapping,@PostMapping,@PutMapping, 和@DeleteMapping的作用及区别、请求参数和返回参数。
作用及区别
-
@GetMapping:- 作用: 处理HTTP GET请求,用于获取资源。通常用于读取数据,不应更改服务器上的资源。
- 区别: 是幂等的,多次请求相同资源不会改变服务器状态。
- 示例:
@GetMapping("/users") public List<User> getAllUsers() {// 获取所有用户 }@GetMapping("/users/{id}") public User getUserById(@PathVariable Long id) {// 获取指定ID的用户 }
-
@PostMapping:- 作用: 处理HTTP POST请求,用于创建新资源。通常用于提交数据,服务器会创建新的资源。
- 区别: 不是幂等的,多次请求会创建多个资源。
- 示例:
@PostMapping("/users") public User createUser(@RequestBody User user) {// 创建新用户 }
-
@PutMapping:- 作用: 处理HTTP PUT请求,用于更新资源。通常用于更新现有资源的全部内容。
- 区别: 是幂等的,多次请求相同资源会导致相同的更新结果。
- 示例:
@PutMapping("/users/{id}") public User updateUser(@PathVariable Long id, @RequestBody User user) {// 更新指定ID的用户 }
-
@DeleteMapping:- 作用: 处理HTTP DELETE请求,用于删除资源。通常用于删除服务器上的资源。
- 区别: 是幂等的,多次请求相同资源删除操作只会导致资源被删除一次。
- 示例:
@DeleteMapping("/users/{id}") public void deleteUser(@PathVariable Long id) {// 删除指定ID的用户 }
请求参数
-
@RequestBody:- 作用: 将请求体中的JSON数据绑定到方法参数上。
- 使用场景: 常用于
@PostMapping和@PutMapping。 - 示例:
@PostMapping("/users") public User createUser(@RequestBody User user) {// 请求体中的JSON数据将绑定到user对象 }
-
@PathVariable:- 作用: 将URL路径中的变量绑定到方法参数上。
- 使用场景: 常用于
@GetMapping,@PutMapping, 和@DeleteMapping。 - 示例:
@GetMapping("/users/{id}") public User getUserById(@PathVariable Long id) {// URL中的id将绑定到方法参数id }
-
@RequestParam:- 作用: 将查询参数绑定到方法参数上。
- 使用场景: 适用于各种HTTP方法。
- 示例:
@GetMapping("/users") public List<User> getUsersByAge(@RequestParam int age) {// URL中的查询参数age将绑定到方法参数age }
返回参数
-
返回对象:
- 作用: 方法可以直接返回对象,Spring Boot会自动将其转换为JSON格式。
- 示例:
@GetMapping("/users/{id}") public User getUserById(@PathVariable Long id) {// 返回User对象,自动转换为JSON }
-
ResponseEntity:
- 作用: 可以自定义HTTP响应状态码、响应头和响应体。
- 示例:
@PostMapping("/users") public ResponseEntity<User> createUser(@RequestBody User user) {User createdUser = userService.createUser(user);return ResponseEntity.status(HttpStatus.CREATED).body(createdUser); }
综合示例
@RestController
@RequestMapping("/api/users")
public class UserController {@GetMappingpublic List<User> getAllUsers() {// 获取所有用户return userService.findAll();}@GetMapping("/{id}")public ResponseEntity<User> getUserById(@PathVariable Long id) {User user = userService.findById(id);if (user == null) {return ResponseEntity.notFound().build();}return ResponseEntity.ok(user);}@PostMappingpublic ResponseEntity<User> createUser(@RequestBody User user) {User createdUser = userService.createUser(user);return ResponseEntity.status(HttpStatus.CREATED).body(createdUser);}@PutMapping("/{id}")public ResponseEntity<User> updateUser(@PathVariable Long id, @RequestBody User user) {User updatedUser = userService.updateUser(id, user);if (updatedUser == null) {return ResponseEntity.notFound().build();}return ResponseEntity.ok(updatedUser);}@DeleteMapping("/{id}")public ResponseEntity<Void> deleteUser(@PathVariable Long id) {userService.deleteUser(id);return ResponseEntity.noContent().build();}
}
总结
Spring Boot中的RESTful API通过使用@GetMapping, @PostMapping, @PutMapping, 和 @DeleteMapping注解,使得每种HTTP请求类型都能简便地映射到控制器的方法上。
通过@RequestBody, @PathVariable, 和 @RequestParam处理请求参数,并利用返回对象或ResponseEntity构建响应,使得RESTful API的开发变得高效且易维护。
相关文章:
Spring Boot中的RESTful API详细介绍及使用
在Spring Boot中,RESTful API的实现通过控制器类中的方法和特定的注解来完成。每个注解对应不同的HTTP请求方法,并通过处理请求参数和返回响应来实现不同的操作。 下面将详细解释RESTful API中的各个方面,包括GetMapping, PostMapping, PutMa…...
nlp学习笔记
目录 很多入门例子 bert chinese 很多入门例子 https://github.com/lansinuote/Huggingface_Toturials bert chinese import torch import torch.nn as nn from transformers import AutoTokenizer, AutoModel, BertModel, TFBertModel, BertTokenizer# youpath = D:/bert-…...
使用python获取内存信息
#!/usr/bin/python # -*- coding:utf-8 -*- psutil模块是一个跨平台的获取进程和系统应用情况(CPU,内存,磁盘,网络,传感器)的库。 该模块用于系统监控、限制进程资源和运行进程的管理等方面。 内存信息&am…...
外包公司泛滥,这些常识你应该提前知道?
今年大环境确实很不好 很多985,211的应届生都在网上大吐苦水,很多大龄离职大厂的技术人也好,业务人也好,都纷纷转向短视频平台做起了自媒体。而找工作的人普遍发现,某最火的招聘平台几乎都被外包公司刷屏了。大大小小的外包公司如…...
Linux下的抓包工具使用介绍
应用层 传输层 网络层 数据链路层 物理层 1)tcpdump(传输/网络层) tcpdump -i eth0 tcpdump -i eth0 -vnn -v:显示包含有TTL,TOS值等等更详细的信息 -n:不要做IP解析为主机名 -nn:…...
centos环境上:k8s 简单安装教程
本次演示安装3节点k8s环境,无需多言,直接上操作步骤: 1、环境准备 k8s部署前,首先需要准备好环境,除了1.4 步骤,其他步骤在所有(3个)节点上都要执行: 1.1 关闭防火墙 s…...
短视频矩阵系统/源码搭建---拆解热门视频功能开发上线
短视频矩阵系统/源码搭建 一、短视频矩阵系统源码开发需要用到以下技术: 1.前端技术:HTML、CSS、JavaScript、Vue.js等前端框架。 2.后端技术:Java、Python、PHP等后端语言及相关框架,如Spring Boot、Django、Laravel等。 3.移…...
手机和模拟器的 Frida 环境配置
目录 一、配置 JDK 和 android 环境 二、连接设备和查看权限 1、连接设备 2、查看手机权限 三、手机配置 Frida 1、frida-server下载 2、验证 四、模拟器配置 Frida 1、下载模拟器并调节成手机版: 2、连接并查看架构 3、配置并开启 x86 的 frida-serve…...
力扣1385.两个数组间的距离值
力扣1385.两个数组间的距离值 二分判断答案是否正确 class Solution {public:int findTheDistanceValue(vector<int>& arr1, vector<int>& arr2, int d) {ranges::sort(arr2);ranges::sort(arr1);int m arr2.size();auto check [&](int low,int h…...
[C++] 小游戏 斗破苍穹 2.11.6 版本 zty出品
大家好,今天zty带来的是斗破苍穹的 2.11.6 版本,这个版本主要更新了:1、背包 2、将退出游戏改到了设置里面 3、如果不逃跑不会停止战斗。废话不多说, 先赞后看 养成习惯 code #include<stdio.h> #include<iostrea…...
认识与学习JSP
JSP核心技术 什么是JSP JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术。JSP/Servlet规范。JSP实际上就是Servlet JSP这门技术的最大的特点在于,写jsp就像在写html,但它相比htm…...
MySql 各种 join
MySql 定义了很多join的方式,接下来我们用一个例子来讲解。 用到的表 本文用到了两个表s1,s2: 内外连接 测试 1 1 1.select * from s1 inner join s2 on(s1.id s2.id);: -------- | id | id | -------- | 3 | 3 | | 4 | 4 | --------2…...
【Android面试八股文】Android中操作多线程的方式有哪些?
文章目录 1. 使用 `Thread` 和 `Runnable`2. `AsyncTask`3. `Handler` 和 `Looper`4. `HandlerThread`5. `ThreadPoolExecutor`6. `IntentService`7. `RxJava`8. `Coroutine`(协程)9. `WorkManager`在Android开发中,有多种方式可以进行多线程操作。以下是主要的几种方式: 1…...
语义分割和目标检测的关系
目录 1.语义分割的目标 2.目标检测的目标 3.两种任务的异同之处 从大方向的任务特点上来说 (1)物体的位置 (2)物体的分类 从数据格式来说 (1)语义分割的数据格式 (2)目标检测的数据格式 1.语义分…...
SpringBoot 大文件基于md5实现分片上传、断点续传、秒传
SpringBoot 大文件基于md5实现分片上传、断点续传、秒传 SpringBoot 大文件基于md5实现分片上传、断点续传、秒传前言1. 基本概念1.1 分片上传1.2 断点续传1.3 秒传1.4 分片上传的实现 2. 分片上传前端实现2.1 什么是WebUploader?功能特点接口说明事件APIHook 机制 …...
数据资产治理与数据质量提升:构建完善的数据治理体系,确保数据资产的高质量与准确性
一、引言 随着信息技术的迅猛发展,数据已经成为企业和社会发展的重要资产。然而,数据资产的有效治理与数据质量的提升,是企业实现数字化转型、提升竞争力的关键。本文旨在探讨数据资产治理与数据质量提升的重要性,并提出构建完善…...
SylixOS下UDP组播测试程序
SylixOS下UDP组播测试 测试效果截图如下: udp组播发送测试程序。 /********************************************************************************************************* ** ** 中国软件开源组织 ** ** …...
Web前端快速开发平台:革命性工具,提升开发效率的新篇章
Web前端快速开发平台:革命性工具,提升开发效率的新篇章 在数字化时代的浪潮中,Web前端技术的快速发展与变革正在重塑我们的数字世界。为了应对这种快速变化,Web前端快速开发平台应运而生,为开发者们提供了更加高效、便…...
内窥镜系统设计简介
内窥镜系统设计简介 1. 源由2. 系统组成2.1 光学系统2.2 机械结构2.3 电子系统2.4 软件系统2.5 安全性和合规性2.6 研发与测试2.7 用户培训与支持 3. 研发过程3.1 光学系统Step 1:镜头设计Step 2:光源Step 3:成像传感器 3.2 机械结构Step 1&a…...
使用Spring Boot实现Redis多数据库缓存
Redis多数据库存储实现用户行为缓存 在我的系统中,为了优化用户行为数据的存储与访问效率,我引入了Redis缓存,并将数据分布在不同的Redis数据库中。通过这种方式,可以减少单一数据库的负载,提高系统的整体性能。 主要…...
Midjourney Basic计划真实体验:7天高强度测试+37组对比图,揭示隐藏限制与生产力断层
更多请点击: https://intelliparadigm.com 第一章:Midjourney Basic计划真实体验:7天高强度测试37组对比图,揭示隐藏限制与生产力断层 过去一周,我以全职创作者身份深度使用 Midjourney Basic 计划($10/月…...
地铁站内人员危险情况检测人员跌倒检测数据集VOC+YOLO格式4369张2类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):4369 标注数量(xml文件个数):4369 标注数量(txt文件个数):4369 …...
终极指南:在Windows上使用BiliBili-UWP第三方客户端获得流畅的B站观影体验
终极指南:在Windows上使用BiliBili-UWP第三方客户端获得流畅的B站观影体验 【免费下载链接】BiliBili-UWP BiliBili的UWP客户端,当然,是第三方的了 项目地址: https://gitcode.com/gh_mirrors/bi/BiliBili-UWP 你是否厌倦了网页版B站的…...
不加机器也能提速10倍?低成本优化系统性能,才是高手真正的实力
不加机器也能提速10倍?低成本优化系统性能,才是高手真正的实力 很多公司一遇到系统卡顿。 第一反应特别统一: 加机器。CPU 不够? 加。 QPS 扛不住? 扩容。 数据库慢? 上集群。 结果最后: 服务器越来越多。 成本越来越高。 系统还是越来越慢。 最离谱的是: 有…...
AI编码助手技能开发:基于Agent Skills打造智能命令行速查工具
1. 项目概述:一个能“听懂人话”的开发者命令行技能如果你和我一样,每天在终端和代码编辑器里花费大量时间,那你肯定对“命令遗忘症”深有体会。明明上周才用过git worktree来并行处理两个功能分支,今天突然想不起来具体的参数顺序…...
MTKClient终极指南:免费解锁联发科设备的完整刷机解决方案
MTKClient终极指南:免费解锁联发科设备的完整刷机解决方案 【免费下载链接】mtkclient MTK reverse engineering and flash tool 项目地址: https://gitcode.com/gh_mirrors/mt/mtkclient MTKClient是一款专为联发科(MediaTek)芯片设备…...
Intel Wi-Fi 6 AX201网卡‘代码10’通病?华硕/戴尔/联想多品牌用户自救指南
Intel Wi-Fi 6 AX201网卡‘代码10’故障全解析与跨品牌解决方案 当你的笔记本突然无法连接Wi-Fi,设备管理器中那个带着黄色感叹号的Intel Wi-Fi 6 AX201网卡图标格外刺眼,显示着"该设备无法启动(代码10)"的提示——这不…...
企业AI转型的底层逻辑与路径选择
文章核心内容围绕企业如何实现AI原生转型展开。首先,强调AI转型重点在于如何实现“AI原生”,而非简单叠加AI功能。其次,提出AI产品应超越对话框,实现隐形化与自动化,并成为记录系统。再次,建议企业技术路径…...
MCA Selector终极指南:Minecraft世界区块管理的核心技术解析与实战应用
MCA Selector终极指南:Minecraft世界区块管理的核心技术解析与实战应用 【免费下载链接】mcaselector A tool to select chunks from Minecraft worlds for deletion or export. 项目地址: https://gitcode.com/gh_mirrors/mc/mcaselector MCA Selector是一款…...
西门子博图V17变量导入昆仑通态MCGS Pro的保姆级避坑指南(含DB块偏移量设置)
西门子博图V17与MCGS Pro高效数据对接实战指南 在工业自动化系统集成中,西门子TIA Portal(博图)与昆仑通态MCGS Pro触摸屏的数据交互是常见需求。许多工程师在变量导入环节频繁遭遇DB块偏移量异常、变量名截断、数据类型不匹配等"暗坑&q…...
