SpringBoot请求响应

这篇具有很好参考价值的文章主要介绍了SpringBoot请求响应。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简单参数

1. 原始方式获取请求参数

Controller方法形参中声明httpServletRequest对象
调用对象的getParameter参数名

@RestController
public class RequestController {

    @RequestMapping("/simpleParam")
    public String simpleParam(HttpServletRequest request){
        String name = request.getParameter("name");
        String ageStr = request.getParameter("age");

        int age = Integer.parseInt(ageStr);
        System.out.println(name+" "+age);
        return "OK";
    }
 }

2.SpringBoot中接受简单参数

请求参数名与方法形变量名相同
自动进行类型转换

@RestController
public class RequestController {
    @RequestMapping("/simpleParam")
    public String simpleParam(String name,Integer age){
        System.out.println(name+" "+age);
        return "OK";
    }
 }

3.RequestParam注解

如果遇到参数名称不匹配的问题,可以用@RequestParam进行映射
注意,当启用了RequestParam,你需要知道RequestParam的required属性默认是true,代表请求参数必须传递,如果不传递可能会报错
防止报错,可以将required=false;

@RestController
public class RequestController {
 @RequestMapping("/simpleParam2")
 public String simpleParam2(@RequestParam(name="name")String username, Integer age){
     System.out.println(username+" "+age);
     return "OK";
 }
}

测试

我测试的工具是用的Postman,走Get和Post都可以

GET,在响应头上传递参数
在这里插入图片描述

POST,在响应体上传递参数
SpringBoot请求响应,JAVA后端,spring boot,后端,java

实体参数

请求规则:请求参数名与形参对象属性名称保持相同,即可直接通过POJO接收。

1.简单实体对象

简单参数定义一个两个还好(比如我定义用户名、密码),但是如果针对用户信息存在比较密集的参数,可能不太容易进行响应和请求。
为了解决这个问题,可以把信息都封装到实体参数中。

首先我们需要在java中做好封装,我们在com.ztt.Pojo包下封装一个User类,其中实现好私有变量的Get和Set方法以及toString方法。

package com.ztt.Pojo;

public class User {
    private String name;
    private Integer age;

    public void setName(String name){
        this.name = name;
    }
    public void setAge(Integer age){
        this.age = age;
    }
    public Integer getAge()
    {
        return this.age;
    }
    public String getName()
    {
        return this.name;
    }
    @Override
    public String toString()
    {
        return "User{"+
                "name="+name+
                "age="+age;
    }

}

在RequestController中定义好方法

import com.ztt.Pojo.User;  //记得给User引用

@RestController
public class RequestController {
	@RequestMapping("/simplePojo")
	public String simplePojo(User user)
	{
	    System.out.println(user);
	    return "OK";
	}

 }

调试通过
SpringBoot请求响应,JAVA后端,spring boot,后端,java

2.复杂实体对象

我们这个实体对象不仅有String和Integer,还引入一个address.
SpringBoot请求响应,JAVA后端,spring boot,后端,java
首先新建Address类,包含了私有变量city和province,以及对应的set、get和toString方法。

package com.ztt.Pojo;

public class Address {
    private String city;
    private  String province;

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public String getProvince() {
        return province;
    }

    public void setProvince(String province) {
        this.province = province;
    }

    @Override
    public String toString() {
        return "Address{" +
                "city='" + city + '\'' +
                ", province='" + province + '\'' +
                '}';
    }
}

在User类中新加入Address以及其相关的set和get方法


package com.ztt.Pojo;

public class User {
    private String name;
    private Integer age;
    private Address address;

    public void setName(String name){
        this.name = name;
    }
    public void setAge(Integer age){
        this.age = age;
    }
    public Integer getAge()
    {
        return this.age;
    }
    public String getName()
    {
        return this.name;
    }

    public Address getAddress() {
        return address;
    }

    public void setAddress(Address address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", address=" + address +
                '}';
    }
}

在RequestController中定义请求方法(其实和简单实体参数的请求一样、基本上不用变)

import com.ztt.Pojo.User;  //记得给User引用

@RestController
public class RequestController {
    @RequestMapping("/complexPojo")
    public String complexPojo(User user)
    {
        System.out.println(user);
        return "OK";
    }

 }

利用Postman发送请求(返回OK)
SpringBoot请求响应,JAVA后端,spring boot,后端,java

数组参数

使用场景:比如使用多选框进行多目标选取。
SpringBoot请求响应,JAVA后端,spring boot,后端,java
接收方式可以采用数组接受,也可以选择集合接受。

@RestController
public class RequestController {
	// 数组进行集合的封装
    @RequestMapping("/arrayParam")
    public String arrayParam(String[] hobby)
    {
        System.out.println(Arrays.toString(hobby));
        return "OK";
    }

    // 利用集合进行参数的封装
    // 使用集合封装时,需要采用@RequestParam对形参定义,因为默认集合是封装到数组类型中的
    @RequestMapping("/listParam")
    public String arrayParam(@RequestParam List<String> hobby)
    {
        System.out.println(hobby);
        return "OK";
    }
}

SpringBoot请求响应,JAVA后端,spring boot,后端,java

日期参数

由于日期记录的形式比较丰富,所以在日期参数传递的过程中,需要使用@Dat 注解进行日期参数格式转换。

import java.time.LocalDateTime;

@RestController
public class RequestController {
@RequestMapping("/dateParam")
    public String dateParam(@RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime updateTime)
    {

        System.out.println(updateTime);
        return "OK";
    }
}

注:如果时间格式不匹配就会出现这样的错误:
Resolved [org.springframework.web.method.annotation.MethodArgumentTypeMismatchException: Failed to convert value of type ‘java.lang.String’ to required type ‘java.time.LocalDateTime’; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [@org.springframework.format.annotation.DateTimeFormat java.time.LocalDateTime] for value [2023-8-11 10:06:54]; nested exception is java.lang.IllegalArgumentException: Parse attempt failed for value [2023-8-11 10:06:54]]

SpringBoot请求响应,JAVA后端,spring boot,后端,java

JSON参数

JSON参数中JSON数据键名与形参对象属性名保持一致,定义POJO类型形参可以接受参数,同时需要使用@RequestBody标识。

@RestController
public class RequestController {

    @RequestMapping("/jsonParam")
    public String jsonParam(@RequestBody User user)
    {
        System.out.println(user);
        return "OK";
    }
}

POST中数据体
{
“name”:“张三”,
“age”:10,
“address”:{
“province”:“beijing”,
“city”:“北京”
}
}

Postman中发送格式

SpringBoot请求响应,JAVA后端,spring boot,后端,java

路径参数

路径参数的请求直接通过URL传递参数
在java中可以通过占位符{…}来标识路径参数,通过@PathVariable获取路径参数.
使用写死的方法也可以,只不过占位符的方法更灵活一些。

@RestController
public class RequestController {
	// 简单参数请求
    @RequestMapping("/path/{id}")
    public String urlParam(@PathVariable Integer id)
    {
        System.out.println(id);
        return "OK";
    }

	// 复杂参数请求
    @RequestMapping("/path/{id}/{name}")
    public String urlParam2(@PathVariable Integer id,@PathVariable String name)
    {
        System.out.println(id);
        System.out.println(name);

        return "OK";
    }
}

请求方式可以直接在浏览器输入路径

http://localhost:8080/path/100
http://localhost:8080/path/1/Tom
(PS:用postman发送也可以)文章来源地址https://www.toymoban.com/news/detail-651383.html

到了这里,关于SpringBoot请求响应的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Spring Boot】请求参数传json对象,后端采用(pojo)CRUD案例(102)

    请求参数传json对象,后端采用(pojo)接收的前提条件: 1.pom.xml文件加入坐标依赖:jackson-databind 2.Spring Boot 的启动类加注解:@EnableWebMvc 3.Spring Boot 的Controller接受参数采用:@RequestBody 4.postman入参采用json格式 1.pom.xml文件加入坐标: 2.Spring Boot 启动类:加注解:@EnableWebMvc POJO类

    2024年02月14日
    浏览(42)
  • 【SpringBoot应用篇】Spring Boot 配置HTTP 响应内容压缩

    5、默认情况下,要执行压缩,响应的长度至少为 2048 字节,可以通过 server.compression.min-response-size 属性配置。 6、默认情况下,仅当响应的内容类型为以下内容之一时,才会对其进行压缩,可以通过 mime-types 属性配置:text/html,text/xml,text/plain,text/css,text/javascript,application/javasc

    2024年02月16日
    浏览(45)
  • 2023 最新版IntelliJ IDEA 2023.1创建Java Web前(vue3)后端(spring-boot3)分离 项目详细步骤(图文详解)

    2023 最新版IntelliJ IDEA 2023.1创建Java Web 项目详细步骤(图文详解) 本篇使用当前Java Web开发主流的spring-boot3框架来创建一个Java前后端分离的项目,前端使用的也是目前前端主流的vue3进行一个简单的项目搭建,让你距离Java全栈开发更近一步 🏴‍☠️。 使用版本: “17.0.1”

    2024年02月12日
    浏览(88)
  • Java项目调试实战:如何高效调试Spring Boot项目中的GET请求,并通过equalsIgnoreCase()解决大小写不一致问题

    最近运行java项目的过程中,遇到一个问题。 在 @檀越 的远程指导下,一步步调试的过程中,发现是由于大小写不一致,导致判断不是同一个字段导致的。 最后将equals()替换为equalsIgnoreCase()后,成功解决问题 ! equals() 会判断大小写区别,equalsIgnoreCase() 不会判断大小写。 好久

    2024年02月03日
    浏览(63)
  • SpringBoot + Vue前后端分离项目实战 || 三:Spring Boot后端与Vue前端连接

    系列文章: SpringBoot + Vue前后端分离项目实战 || 一:Vue前端设计 SpringBoot + Vue前后端分离项目实战 || 二:Spring Boot后端与数据库连接 SpringBoot + Vue前后端分离项目实战 || 三:Spring Boot后端与Vue前端连接 SpringBoot + Vue前后端分离项目实战 || 四:用户管理功能实现 SpringBoot + Vue前后

    2024年02月12日
    浏览(71)
  • SpringBoot + Vue前后端分离项目实战 || 二:Spring Boot后端与数据库连接

    系列文章: SpringBoot + Vue前后端分离项目实战 || 一:Vue前端设计 SpringBoot + Vue前后端分离项目实战 || 二:Spring Boot后端与数据库连接 SpringBoot + Vue前后端分离项目实战 || 三:Spring Boot后端与Vue前端连接 SpringBoot + Vue前后端分离项目实战 || 四:用户管理功能实现 SpringBoot + Vue前后

    2024年02月11日
    浏览(66)
  • Java 后端响应头中 ContenType变量 如何设置

    ContentType 默认值 及 文件流对应类型 Java后端响应头中的ContentType通常需要手动设置,以指示客户端应如何解析响应主体。如果未设置ContentType,服务器可能会使用默认值。在某些情况下,这可能会导致问题,例如,如果响应主体是JSON格式,而服务器将ContentType设置为text/plain,

    2024年02月16日
    浏览(37)
  • Java http 响应式请求和非响应式请求有什么区别

    以下是一个使用Spring WebFlux实现真正的流式编程的案例: 运行Spring Boot应用程序,并使用浏览器或类似cURL的工具发送GET请求: 获取所有用户的请求:http://localhost:8080/users/stream 你将会看到一个持续不断的流式响应,每秒钟返回一个用户对象。这个案例中,我们使用了 @GetMapp

    2024年01月17日
    浏览(76)
  • Java接口通用请求和响应

    2024年02月15日
    浏览(39)
  • Java Restful API接口获取请求头、请求体、以及设置响应状态码、应答(响应)体等

    一、获取请求头 接口示例1: 1、从 request 对象中获取请求头: 二、获取请求体 1、从 request 对象中,使用缓冲流读取器、stream流等方式获取请求体 推荐写法一:

    2024年02月16日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包