JavaEE进阶---SpringMVC(二)请求里面十种参数类型

文章目录

1.请求

1.1接受单个参数的请求

下面的这个就是我们的项目代码,都是单个参数的,我们定义了两个方法:r1的这个参数就是name,r2的这个参数就是age;

我们运行起来之后,这个r1需要传递的这个参数就是名字,我们设置之后直接点击发送,下面就会打印我们在这个IDEA里面设置的这个相应的相关的信息;

同理,当我们把这个路径指定为我们的这个r2的路径的时候,这个里面就会把我们age传递过去,这个就会把我们的传递的这个age参数给打印出来作为这个响应的信息;

我们上面的两个都是在这个postman里面构造这个请求的,构造之后我们就可以直接把这个url从这个postman复制到这个浏览器上面,使用我们的这个浏览器进行打开,这个也是可以看到效果的;

但是如果我们给了这个参数但是什么都没有传递,这个时候就会报错:

下面的这个大概说的就是我们的这个代码里面的这个参数类型int是我们的基本数据类型,我们想要不传递参数且不会报错,这个时候需要使用我们的包装类:integer

使用包装类之后,及时我们使用这个postman的时候没有传递这个参数的实质性内容,但是这个不会报错,而是使用这个默认的nnull值进行处理;(因此我们对于接口设计的时候,通常使用包装类型)

如果我们的这个需要传递的参数类型和我们传递这个参数的类型不匹配,这个时候就会被认为是客户端的错误(例如我们的这个age需要传递的是integer类型的,但是我们传递字符串过去)这个时候就会报错,说这个就是客户端的问题,我们的这个是无法进行解析的;

这个时候我们的这个日志里面也是会显示这个相关的信息的,就是说无法进行成功的转换;

1.2多个参数的传递

解释这个里面是多个参数,我们的这个参数的传递的方式还是不变的,就是按照这个顺序依次进行传递即可;

1.3传递对象

当我们想要把上面的这个参数的数量进行调整的时候,上面的这个方式就显得很生硬,因此我们就可以考虑把我们的这个参数封装到一个对象里面去,我们直接把这个对象传递过去;

1.4参数重命名

这个就是在我们的前后端进行交互的时候,我们的这个参数的名字可以进行设计,就是我们的前端传递的参数的叫法和我们的这个后端使用的这个参数的名字可以是不一样的;

我们可以使用这个@requestParam这个注解进行说明,这个注解里面的参数指的就是我们的这个前端传递的名字,也就是我们在这个postman里面进行测试的名字,我们的这个postman里面传递的这个name参数的内容被我们的这个代码里面的这个username接收到,这样的话我们的这个后端就可以根据自己的需求对于这个变量的名字进行修改;

只要这个注解里面的的这个名字和前端保持一致即可;

1.5设置参数是非必传的

对于上面的这个注解,如果我们对于这个参数一旦加上了注解,这个时候我们的这个参数就是必须传递的,但是我们可以进行这个设置可以不传递这个参数;

就是这个注解里面对于这个参数的默认就是true,就是这个参数我们必须传递,但是我们可以加上这个required=false这个参数表示我们的这个参数不是必须的;

这样的话,如果我们的这个postman里面没有传递这个参数,这个时候我们的这个日志里面也是不会显示错误信息的;

1.6数组的请求方式

定义这个r6方法,这个里面的参数就是我们的arr数组,这个返回值就是把我们的这个数组元素挨个的打印出来;

postman里面的这个参数的传递的具体的写法:这个实际上是对于我们的这个int进行处理,因为我们设置的这个参数是string类型的数组,但是这个不影响;

下面的这个是传递数组的第二个方式,我们可以了解一下,这个也是可以正常的进行打印输出的;

1.7如何传递集合

我们的这个集合传递使用的这个参数就是list

我们进行这个传递之后发现是会报错的;

我们进行这个错误日志的查看发现是这个没有找到合适的构造器,这个时候我们需要加上这个注解;

其实上面的这个主要的原因是我们的这个一组数据进行传递的时候是使用这个数组的方式进行组织的,如果哦我们想要是用这个集合进行这个数据的组织,这个时候我们就需要使用这个注解进行额外的说明;

即使进行上面的这个额外的说明,再次运行的时候是还会报错的,这个主要是因为我们的这个参数是空指针异常,因此我们需要向上面的这个里面添加我们的这个if进行判断,如果是空的话就会直接返回;

然后再次运行,这个时候才会打印出正确的结果;

1.8传递json数据

我们首先需要创建对象,然后调用这个相关的成员方法对于这个相关的属性进行赋值;

1)我们把这个创建的对象转换为这个json数据之后输出;

2)把这个得到的json字符串转换为我们的这个对象再次打印,readvalue的参数就是我们的这个字符串和我们的这个类的类对象(反射);

我们传递这个json数据的时候,需要注意这个选择的内容是body里面的这个raw里面的在这个json字符串,然后把我们的这个请求按照这个json格式进行输入;

因为这个json传递的时候,是从这个body里面读取内容的,因此这个参数需要加上注解:@requestbody

1.9获取url里面的参数

我们的这个注解里面的这个内容需要使用这个大括号包裹起来;

我们在这个postman里面直接输入我们的这个id,然后点击这个send之后就看到响应;

下面的这个是多个参数的url:我们直接写在这个url里面就可以了;但是这个需要加上我们的注解,而且这个注解要求我们传递参数的时候不可以是空的;

1.10获取文件

下面的这个就是获取这个文件的名字:我们使用的注解是这个requestpart

此外,我们可以添加这个路径让这个图片保存到这个指定的位置上面去,可以查看这个保存的效果;

相关推荐
用户3126874877202 小时前
ReentrantLock 到底怎么排队的?AQS 源码拆解
java
Zane19942 小时前
ArrayList 插入慢,LinkedList 一定快吗
java·后端
吃饱了得干活2 小时前
从类爆炸到协作——DDD战略设计登场
java·后端·架构
wno7042 小时前
Spring Boot异常处理
java·spring boot·后端
君顾12 小时前
智慧场馆解决方案小程序系统开发实战指南
java·开发语言·智慧场馆
学习星球2 小时前
【LeetCode算法题精讲】二分查找精讲
java·数据结构·算法·leetcode·职场和发展·图搜索
Escalating_xu2 小时前
【Linux线程同步】从数据竞争到 mutex、条件变量与生产者消费者(上篇)
android·java·linux
承渊政道2 小时前
10:30提交预约会不会撞上10:00的会议?我用飞算JavaAI3.9.1和3.9.9跑了四个时间段
java·springboot·ai编程·飞算javaai·java代码生成
SL_staff3 小时前
风控规则如何从硬编码解耦?我们在 JVS-Rules 中的实践与思考
java·spring boot·设计模式
数据库技术讲堂3 小时前
从 GitOps 到数据库变更:NineData 如何打通 CI/CD 的数据库治理链路
java·数据库·ci/cd