当前位置: 首页 > news >正文

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] 

相关文章:

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

如何在 Spring Boot 中获取Request Body&#xff1f; Java 语言是所有编程语言中最流行的语言之一。使用 Java 编程语言有几个优点&#xff0c;无论是出于安全目的还是构建大型分发项目。使用 Java 的优点之一是 Java 试图借助类、继承、多态等概念将语言中的每个概念与现实世…...

计算机网络(二)

ip地址&#xff1a;11010010&#xff1a;01011110:00100100:00010100 子网掩码:11111111:11111111:11111111:11000000 and &#xff1a;11010010&#xff1a;01011110&#xff1a;00100100&#xff1a;00000000 210.94.36.0的下一站为R1 因为255为11111111 192为&#xff…...

如何在Python中进行数学建模?

数学建模是数据科学中使用的强大工具&#xff0c;通过数学方程和算法来表示真实世界的系统和现象。Python拥有丰富的库生态系统&#xff0c;为开发和实现数学模型提供了一个很好的平台。本文将指导您完成Python中的数学建模过程&#xff0c;重点关注数据科学中的应用。 数学建…...

JavaSE——类与对象(5)

一、抽象类 1.1为什么需要抽象类 父类的某些方法&#xff0c;不确定怎么实现&#xff0c;也不需要实现。 class Animal{public String name;public Animal(String name){this.name name;}public void eat()//这里实现了也没有意义{System.out.println("这是一个动物&am…...

Istio笔记01--快速体验Istio

Istio笔记01--快速体验Istio 介绍部署与测试部署k8s安装istio测试istio 注意事项说明 介绍 Istio是当前最热门的服务网格产品&#xff0c;已经被广泛应用于各个云厂商和IT互联网公司。企业可以基于Istio轻松构建服务网格&#xff0c;在接入过程中应用代码无需更改&#xff0c;…...

面试小札:Java如何实现并发编程

多线程基础 继承Thread类 定义一个类继承自 Thread 类&#xff0c;重写 run 方法。在 run 方法中编写线程要执行的任务逻辑。例如&#xff1a; java class MyThread extends Thread { Override public void run() { System.out.println("线程执行的任务…...

java-a+b 开启java语法学习

代码 &#xff08;ab) import java.util.Scanner; //导入 java.util包中的Scanner 类&#xff0c;允许读取键盘输入数据public class Main { // 创建一个公共类 Mainpublic static void main(String[] args) {//程序入口点&#xff0c;main方法Scanner scanner new Scanner(…...

RNN模型文本预处理--数据增强方法

数据增强方法 数据增强是自然语言处理&#xff08;NLP&#xff09;中常用的一种技术&#xff0c;通过生成新的训练样本来扩充数据集&#xff0c;从而提高模型的泛化能力和性能。回译数据增强法是一种常见的数据增强方法&#xff0c;特别适用于文本数据。 回译数据增强法 定义…...

maven 中<packaging>pom</packaging>配置使用

在 Maven 项目的 pom.xml 文件中&#xff0c; 元素用于指定项目的打包类型。默认情况下&#xff0c;如果 元素没有被显式定义&#xff0c;Maven 会假设其值为 jar。但是&#xff0c;当您设置 pom 时&#xff0c;这意味着该项目是一个 POM&#xff08;Project Object Model&…...

【Python中while循环】

一、深拷贝、浅拷贝 1、需求 1&#xff09;拷贝原列表产生一个新列表 2&#xff09;想让两个列表完全独立开&#xff08;针对改操作&#xff0c;读的操作不改变&#xff09; 要满足上述的条件&#xff0c;只能使用深拷贝 2、如何拷贝列表 1&#xff09;直接赋值 # 定义一个…...

【深度学习】服务器常见命令

1、虚拟环境的安装位置 先进入虚拟环境 which python2、升序查看文件内容 ls -ltr3、查看服务器主机空间使用情况 df -hdf -h .4、查看本地空间使用情况 du -sh ./*du -sh * | sort -nr5、查找并删除进程 # 查找 ps aux# 删除 kill -KILL pid6、查看服务器配置 lscpuuna…...

技术分析模板

文章目录 概要整体架构流程技术名词解释技术细节小结 概要 提示&#xff1a;这里可以添加技术概要 例如&#xff1a; openAI 的 GPT 大模型的发展历程。 整体架构流程 提示&#xff1a;这里可以添加技术整体架构 例如&#xff1a; 在语言模型中&#xff0c;编码器和解码器…...

python:文件操作

一、文件路径 在Windows系统中&#xff0c;每个磁盘都有自己的根目录&#xff0c;用分区名加反斜杠来表示。我们定位文件的位置有两种方法&#xff0c;一种是绝对路径&#xff0c;另一种是相对路径。绝对路径是从根目录出发的路径&#xff0c;路径中的每个路径之间用反斜杠来分…...

Nginx和Apache有什么异同?

Nginx和Apache都是广泛使用的Web服务器软件&#xff0c;它们各自具有独特的特点和优势&#xff0c;适用于不同的应用场景。以下是关于Nginx和Apache的不同、相同以及使用区别的详细分析&#xff1a; 一、不同点 资源占用与并发处理能力&#xff1a; Nginx使用更少的内存和CPU资…...

泰州榉之乡全托机构探讨:自闭症孩子精细动作训练之法

当发现自闭症孩子精细动作落后时&#xff0c;家长们往往会感到担忧和困惑。那么&#xff0c;自闭症孩子精细动作落后该如何训练呢&#xff1f;今天&#xff0c;泰州榉之乡全托机构就来为大家详细解答。 榉之乡大龄自闭症托养机构在江苏、广东、江西等地都有分校&#xff0c;一直…...

Cookie跨域

跨域&#xff1a;跨域名&#xff08;IP&#xff09; 跨域的目的是共享Cookie。 session操作http协议&#xff0c;每次既要request&#xff0c;也要response&#xff0c;cookie在创建的时候会产生一个字符串然后随着response返回。 全网站的各个页面都会带着登陆的时候的cookie …...

qt QGraphicsPolygonItem详解

1、概述 QGraphicsPolygonItem是Qt框架中QGraphicsItem的一个子类&#xff0c;它提供了一个可以添加到QGraphicsScene中的多边形项。通过QGraphicsPolygonItem&#xff0c;你可以定义和显示一个多边形&#xff0c;包括其填充颜色、边框样式等属性。QGraphicsPolygonItem支持各…...

“harmony”整合不同平台的单细胞数据之旅

其实在Seurat v3官方网站的Vignettes中就曾见过该算法&#xff0c;但并没有太多关注&#xff0c;直到看了北大张泽民团队在2019年10月31日发表于Cell的《Landscap and Dynamics of Single Immune Cells in Hepatocellular Carcinoma》&#xff0c;为了同时整合两类数据&#xf…...

如何构建一个可扩展、全球可访问的 GenAI 架构?

你有没有尝试过使用人工智能生成图像&#xff1f; 如果你尝试过&#xff0c;你就会知道&#xff0c;一张好的图像的关键在于一个详细具体的提示。 我不擅长这种详细的视觉提示&#xff0c;所以我依赖大型语言模型来生成详细的提示&#xff0c;然后使用这些提示来生成出色的图像…...

QT实战--qt各种按钮实现

本篇介绍qt一些按钮的实现&#xff0c;包括正常按钮&#xff1b;带有下拉箭头的按钮的各种实现&#xff1b;按钮和箭头两部分分别响应&#xff1b;图片和按钮大小一致&#xff1b;图片和按钮大小不一致的处理&#xff1b;文字和图片位置的按钮 效果图如下&#xff1a; 详细实现…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

idea大量爆红问题解决

问题描述 在学习和工作中&#xff0c;idea是程序员不可缺少的一个工具&#xff0c;但是突然在有些时候就会出现大量爆红的问题&#xff0c;发现无法跳转&#xff0c;无论是关机重启或者是替换root都无法解决 就是如上所展示的问题&#xff0c;但是程序依然可以启动。 问题解决…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…...

什么是EULA和DPA

文章目录 EULA&#xff08;End User License Agreement&#xff09;DPA&#xff08;Data Protection Agreement&#xff09;一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA&#xff08;End User License Agreement&#xff09; 定义&#xff1a; EULA即…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型&#xff08;LLM&#xff09;参数规模的增长&#xff0c;推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长&#xff0c;而KV缓存的内存消耗可能高达数十GB&#xff08;例如Llama2-7B处理100K token时需50GB内存&a…...

深度学习习题2

1.如果增加神经网络的宽度&#xff0c;精确度会增加到一个特定阈值后&#xff0c;便开始降低。造成这一现象的可能原因是什么&#xff1f; A、即使增加卷积核的数量&#xff0c;只有少部分的核会被用作预测 B、当卷积核数量增加时&#xff0c;神经网络的预测能力会降低 C、当卷…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)

船舶制造装配管理现状&#xff1a;装配工作依赖人工经验&#xff0c;装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书&#xff0c;但在实际执行中&#xff0c;工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...