Spring Boot教程之十一:获取Request 请求 和 Put请求

如何在 Spring Boot 中获取Request Body?

Java 语言是所有编程语言中最流行的语言之一。使用 Java 编程语言有几个优点,无论是出于安全目的还是构建大型分发项目。使用 Java 的优点之一是 Java 试图借助类、继承、多态等概念将语言中的每个概念与现实世界联系起来。

Java 中还有其他几个概念可以增强 Java 代码和程序员之间的用户友好交互,例如泛型、访问说明符、注释等。这些功能为 Java 程序的类和方法添加了额外的属性。在本文中,我们将讨论如何在 Spring Boot 中获取传入Request Body。

@RequestBody:注解用于获取传入请求中的请求主体。

要掌握 Spring Boot 并有效处理请求主体和数据处理,请考虑参加Java 后端直播课程。本课程涵盖了请求处理等基本后端开发主题,并帮助您构建强大、可扩展的 API。在此处了解更多信息。

Spring Initializr是一个基于 Web 的工具,使用它我们可以轻松生成 Spring Boot 项目的结构。它还为以元数据模型表达的项目提供了各种功能。此模型允许我们配置 JVM 支持的依赖项列表。在这里,我们将使用 spring 初始化程序创建应用程序的结构,然后使用 IDE 创建示例 GET 路由。因此,为此,请按顺序执行以下步骤:

步骤 1:转到Spring Initializr

根据要求填写详细信息。对于此应用程序:

Project: Maven
Language: Java
Spring Boot: 2.2.8
Packaging: JAR
Java: 8
Dependencies: Spring Web   

第 2 步:单击“生成”按钮,下载启动项目。

项目元数据

步骤 3:解压 zip 文件。现在打开合适的 IDE,然后转到文件->新建->从现有源创建项目->Spring-boot-app并选择 pom.xml。单击提示中的导入更改并等待项目同步。

项目创建

注意:在导入 Maven 项目窗口中,确保选择与创建项目时选择的 JDK 版本相同的版本。

步骤 4:转到src -> main -> java -> com.gfg.Spring.boot.app并创建一个名为 Controller 的 Java 类,并添加注释 @RestController。现在创建一个 GET API,如下所示:

例子:

Person.java

Java

// Class
public class Person {

    // Attributes of Person
    int id;
    String name;
    int age;

    // Constructor of this class
    public Person(int id, String name, int age) {

        // this keyword refers to current instance object
        this.id = id;
        this.name = name;
        this.age = age;
    }

    // Method of Person class
    // toString() method
    public String toString() {

        // Simply returning the name and age of person
        return id + " " + name + " " + age;
    }

Controller.java

Java

@RestController
public class Controller {

    @GetMapping("/Get")
    public void getBody() {
        // Creating a new Person object by calling a method that creates and returns a Person object
        Person ob = createPerson();

        // Print and display the person object
        System.out.println(ob);
    }

    private Person createPerson() {
        // Create and return a new Person object
        return new Person(1, "Aayush", 32);
    }
}

此应用程序现已准备好运行。运行Main类并等待 Tomcat 服务器启动。

注意:这里我们没有使用 @RequestBody 注释,因为它用于处理 POST 请求;由于我们没有在请求正文中发送任何数据,所以这里不需要 @RequestBody 注释。

如果我们想添加 @RequestBody 注释来处理 GET 请求,我们应该使用不同的 HTTP 方法,即 @PostMapping 而不是 @GetMapping。下面是相同的代码实现。

Java

@RestController
public class Controller 
{

    @PostMapping("/Get")
    public void getBody(@RequestBody Person ob) 
    {
        // Print and display the person object
        System.out.println(ob);
    }
}

我们不必创建 Person 对象,因为当向端点发出/Get请求时,ob参数将自动与来自请求正文的数据相关联。

注意:对象的创建将由 Spring 框架根据请求体中的 JSON 数据来处理。Person

步骤5:现在转到Postman并添加URL地址并发出获取请求。

获取请求

注意: Tomcat 服务器的默认端口是 8080,可以在 application.properties 文件中更改。

输出:最后将在下面的终端/CMD 上生成如下输出: 

 1 Aayush 32

 如何在 Spring Boot 中发出 Put 请求?

Java 语言是所有编程语言中最流行的语言之一。使用 Java 编程语言有几个优点,无论是出于安全目的还是构建大型分发项目。使用 JAVA 的优点之一是 Java 试图借助类、继承、多态等概念将语言中的每个概念与现实世界联系起来。

Java 中还有其他几个概念可以增强 Java 代码和程序员之间的用户友好交互,例如泛型、访问说明符、注释等。这些功能为类以及 Java 程序的方法添加了额外的属性。在本文中,我们将讨论如何请求 Spring Boot。

PUT 和 POST 请求之间的区别

当我们必须更新特定数据时,通常使用 Put 请求,而当我们必须添加数据库中不存在的新数据时,则使用 Post 请求。

@PutMapping:此 spring boot 注释用于处理来自客户端的传入 put 请求。

注意:首先我们需要在我们的项目中建立 spring 应用程序。

Spring Initializr是一个基于 Web 的工具,使用它我们可以轻松生成 Spring Boot 项目的结构。它还为以元数据模型表达的项目提供了各种不同的功能。此模型允许我们配置 JVM 支持的依赖项列表。在这里,我们将使用 spring 初始化程序创建应用程序的结构。

因此,要做到这一点,请按如下顺序执行以下步骤:

步骤 1:转到 Spring Initializr

项目元数据

第 2 步:根据要求填写详细信息。对于此申请:

Project: Maven
Language: Java
Spring Boot: 2.2.8
Packaging: JAR
Java: 8
Dependencies: Spring Web

步骤3:单击“生成”将下载启动项目。

步骤 4:解压 zip 文件。现在打开合适的 IDE,然后转到文件->新建->从现有源创建项目->Spring-boot-app并选择 pom.xml。单击提示中的导入更改并等待项目同步。

文件导入

注意:在导入 Maven 项目窗口中,确保选择与创建项目时选择的 JDK 版本相同的版本。

步骤 5:转到src -> main -> java -> com.gfg.Spring.boot.app,创建一个名为 Controller 的 java 类并添加注释 @RestController。现在创建一个 put API,如下所示:

  • Java
// Annotation
@RestController
// Class
public class Controller {
    ArrayList<Integer>ans;
    // Constructor of this class
    Controller() {
        ans = new ArrayList<Integer>();
        ans.add(1);
        ans.add(2);
        ans.add(3);
    }
    // Annotation
    @PutMapping("/change/{id}")
 
    // Method
    void change(@PathVariable int id) {
 
        System.out.println(ans);
        ans.remove(id);
        ans.set(id, 45);
 
        System.out.println(ans);
    }
} 

此应用程序现已准备好运行。运行 SpringBootAppApplication 类并等待 Tomcat 服务器启动。

注意: Tomcat 服务器的默认端口是 8080,可以在 application.properties 文件中更改。

步骤 6:现在转到Postman并添加URL 地址并发出 put 请求,如下图所示:

邮差

输出:最后将在终端/ CMD上生成输出

[1, 2, 3] 
[1, 45, 3] 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DVWA靶场文件包含(File Inclusion)通关教程(high级别)

目录 DVWA 靶场建立闯关 DVWA 靶场建立 需要的东西&#xff1a; phpStudy&#xff1a; 链接&#xff1a; phpStudy 提取码&#xff1a;0278 DVWA-master 链接&#xff1a; DVWA靶场 提取码&#xff1a;0278 建议在虚拟机中操作&#xff0c;以防数据库冲突&#xff0c;下面有…

基于yolov8、yolov5的铝材缺陷检测识别系统(含UI界面、训练好的模型、Python代码、数据集)

摘要&#xff1a;铝材缺陷检测在现代工业生产和质量管理中具有重要意义&#xff0c;不仅能帮助企业实时监控铝材质量&#xff0c;还为智能化生产系统提供了可靠的数据支撑。本文介绍了一款基于YOLOv8、YOLOv5等深度学习框架的铝材缺陷检测模型&#xff0c;该模型使用了大量包含…

力扣刷题TOP101:8.BM10 两个链表的第一个公共结点

目录&#xff1a; 目的 思路 复杂度 记忆秘诀 python代码 目的 两个无环的单向链表&#xff0c;它们的第一个公共结点{{6,7}。 思路 这个任务是找到两个链表的第一个公共结点。可以看作两个心机boy偷偷补课翻车事件。平时嘴上说自己在家玩游戏&#xff0c;实际上背地里都偷…

哪些行业对六西格玛管理方法的需求较大?

六西格玛作为一种追求极致质量和流程优化的管理哲学&#xff0c;自诞生以来&#xff0c;便在多个行业中展现出了巨大的应用价值。该方法通过定义、测量、分析、改进和控制&#xff08;DMAIC&#xff09;五个阶段&#xff0c;帮助企业实现流程的持续改进&#xff0c;提高产品质量…

Spring Web MVC其他扩展(详解下)

文章目录 Spring MVC其他扩展&#xff08;下&#xff09;异常处理异常处理机制声明式异常好处基于注解异常声明异常处理 拦截器拦截器概念拦截器使用拦截器作用位置图解拦截器案例拦截器工作原理源码 参数校验校验概述操作演示SpringMVC自定义参数验证ValueObject(VO) 文件上传…

排序学习整理(1)

1.排序的概念及运用 1.1概念 排序&#xff1a;所谓排序&#xff0c;就是使⼀串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作&#xff0c;以便更容易查找、组织或分析数据。 1.2运用 购物筛选排序 院校排名 1.3常见排序算法 2.实…

【linux学习指南】Linux进程信号产生(三) 硬件异常除零出错?野指针异常?core文件

文章目录 &#x1f4dd;前言&#x1f320;模拟除0&#x1f309;除0出错&#xff1f;&#x1f309;野指针异常? &#x1f320;⼦进程退出coredump&#x1f309;Core Dump &#x1f6a9;总结 &#x1f4dd;前言 硬件异常被硬件以某种⽅式被硬件检测到并通知内核,然后内核向当前…

【人工智能-科普】图神经网络(GNN):与传统神经网络的区别与优势

文章目录 图神经网络(GNN):与传统神经网络的区别与优势什么是图神经网络?图的基本概念GNN的工作原理GNN与传统神经网络的不同1. 数据结构的不同2. 信息传递方式的不同3. 模型的可扩展性4. 局部与全局信息的结合GNN的应用领域总结图神经网络(GNN):与传统神经网络的区别与…

青藤云安全携手财信证券,入选金融科技创新应用优秀案例

11月29日&#xff0c;由中国信息通信研究院主办的第四届“金信通”金融科技创新应用案例评选结果正式发布。财信证券与青藤云安全联合提交的“基于RASP技术的API及数据链路安全治理项目”以其卓越的创新性和先进性&#xff0c;成功入选金融科技创新应用优秀案例。 据悉&#x…

Python系列 - MQTT协议

Python系列 - MQTT协议 资源连接 MQTT的介绍和应用场景的示例说明 一、什么是MQTT 百度关于MQTT的介绍如下&#xff1a; MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布订阅范式的消息协议。它工作在 TCP/IP协议之上&#xff0c;是为硬件性能低下的远程设…

winform跨线程更新界面

1、报错代码 下面的代码中的this.Text指的是一个winform的窗体&#xff0c;开启Task执行下面的代码以后直接报错&#xff0c;提示线程间操作无效&#xff0c;这是因为在WinForms应用程序中&#xff0c;UI元素&#xff08;如控件&#xff09;通常只能在创建它们的线程&#xff…

Mybatis:CRUD数据操作之多条件查询及动态SQL

Mybatis基础环境准备请看&#xff1a;Mybatis基础环境准备 本篇讲解Mybati数据CRUD数据操作之多条件查询 1&#xff0c;编写接口方法 在 com.itheima.mapper 包写创建名为 BrandMapper 的接口。在 BrandMapper 接口中定义多条件查询的方法。 而该功能有三个参数&#xff0c;…

音视频技术扫盲之预测编码的基本原理探究

预测编码是一种数据压缩技术&#xff0c;广泛应用于图像、视频和音频编码等领域。其基本原理是利用数据的相关性&#xff0c;通过对当前数据的预测和实际值与预测值之间的差值进行编码&#xff0c;从而实现数据压缩的目的。 一、预测编码的基本概念 预测编码主要包括预测器和…

5. langgraph实现高级RAG (Adaptive RAG)

1. 数据准备 from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain_community.document_loaders import WebBaseLoader from langchain_community.vectorstores import Chromaurls ["https://lilianweng.github.io/posts/2023-06-23-age…

自动化配置

自动化配置共享目录 nfs&#xff1a;共享某个目录&#xff0c;共享给哪些客户端&#xff0c;rw&#xff08;读写&#xff09;——rwx&#xff08;给目录权限设置&#xff09;&#xff0c;ro&#xff08;只读&#xff09; 写脚本 1、装包 可以调用仓库之前装包的脚本 &#x…

AtomicIntegerFieldUpdater能否降低内存

1. 代码如下&#xff1a; import java.util.LinkedList; import java.util.List; import java.util.concurrent.atomic.AtomicInteger;public class AtomicIntegerTest {final AtomicInteger startPosition new AtomicInteger(0);final AtomicInteger wrotePosition new Atom…

微服务即时通讯系统的实现(服务端)----(3)

目录 1. 消息存储子服务的实现1.1 功能设计1.2 模块划分1.3 模块功能示意图1.4 数据管理1.4.1 数据库消息管理1.4.2 ES文本消息管理 1.5 接口的实现1.5.1 消息存储子服务所用到的protobuf接口实现1.5.2 最近N条消息获取接口实现1.5.3 指定时间段消息搜索接口实现1.5.4 关键字消…

数据湖的概念(包含数据中台、数据湖、数据仓库、数据集市的区别)--了解数据湖,这一篇就够了

文章目录 一、数据湖概念1、企业对数据的困扰2、什么是数据湖3、数据中台、数据湖、数据仓库、数据集市的区别 网上看了好多有关数据湖的帖子&#xff0c;还有数据中台、数据湖、数据仓库、数据集市的区别的帖子&#xff0c;发现帖子写的都很多&#xff0c;而且专业名词很多&am…

202页MES项目需求方案深入解读,学习MES系统设计规划

202页MES项目需求方案深入解读&#xff0c;学习MES系统设计规划 MES项目需求方案旨在实现制造执行、效率提升、精细化管理等多个方面的功能。整体结构分为七大部分&#xff0c;包括制造执行、效率、精细化、品质在线、设备、用户思想和数据互联。制造执行部分关注订单、品质数据…

基础(函数、枚举)错题汇总

枚举默认从0开始&#xff0c;指定后会按顺序赋值 而这个枚举变量X&#xff0c;如果在全局&#xff08;函数外部&#xff09;定义&#xff0c;那默认为0&#xff0c;如果在函数内部&#xff08;局部变量&#xff09;&#xff0c;那就是随机值&#xff0c;必须初始化。 枚举变量…