请求响应
这次来了解一下JavaWeb中请求响应相关的内容,本篇将带你快速了解JavaWeb中的请求响应以及Postman工具的使用!
一、请求响应
1、概述
体系结构图如下,
1.1 请求
请求(HttpServletRequest):获取请求数据
1.2 响应
响应(HttpServletResponse):设置响应数据
1.3 两种软件架构方式
1) BS架构
Browser/Server,浏览器/服务器架构模式。客户端只需要浏览器,应用程序的逻辑和数据都存储在服务端。
优点是维护起来较方便,但给用户的体验较一般。
注:一般来说用Java语言开发的应用程序都是基于 BS架构。
2)CS架构
Client/Server,客户端/服务器架构模式。需要单独安装客户端。
缺点是开发维护麻烦,但能给用户较好的体验。
2、Postman
2.1 概述
Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件。
作用:常用于进行接口测试
下载地址:https://www.postman.com/downloads/
关于Postman的下载,非常简单,不再赘述。
2.2 基本使用
首次使用,需要注册登录。登录进去如下图,首先点击 Workspaces创建工作空间 ->Create Workspace,输入名称,选择可见范围,点击创建即可,如下。
创建完成后,添加请求并测试。首先启动我们SpringBoot的入门程序,并成功在浏览器中访问。
对应的controller类如下
1 | package com.itweb.controller; |
然后在Postman中添加请求并测试,响应回来的数据也是 Hello World~,说明测试成功!
如要保存,直接按 ctrl+s,命名并添加集合(文件夹)即可。
3、请求相关的参数
3.1 简单参数
1)原始方式
在原始的web程序中,获取请求参数,需要通过HttpServletRequest对象手动获取。
缺点:繁琐,且需要手动类型转换
总结
1、Controller方法形参中声明HttpServletRequest对象
2、调用对象的getParameter(参数名)
2)SpringBoot方式
情况一:参数名与形参变量名相同,定义形参即可接收参数。
总结
1、请求参数名与方法形参变量名相同
2、会自动进行类型转换
情况二:方法形参名称与请求参数名称不匹配,可以使用 @RequestParam完成映射。
Postman中新建一个GET请求用于测试,GET请求如下
controller控制类中添加的代码如下
1 |
|
注:@RequestParam中的 required属性默认为true,表示该请求参数必须传递,如果不传递将报错。若该参数是可选的,则可以将 required属性设置为 true
总结
1、方法形参名称与请求参数名称不匹配,通过该注解完成映射
2、该注解的required属性默认是true,代表请求参数必须传递
3.2 实体参数
1)简单实体对象
请求参数名与形参对象属性名相同,定义POJO接收即可
2)复杂实体对象
请求参数名与形参对象属性名相同,按照对象层次结构关系即可接收嵌套POJ0属性参数。
3)总结
请求参数名与形参对象属性名相同,即可直接通过POJO接收
3.3 数组集合参数
1)数组参数
请求参数名与形参数组名称相同且请求参数为多个,定义数组类型形参即可接收参数
2)集合参数
请求参数名与形参集合名称相同且请求参数为多个,@RequestParam 绑定参数关系
注:集合变量名要和请求参数名保持一致,并且要在前面加上 @RequestParam,这样才能将多个请求参数的值封装到 List集合。
具体步骤如下:
Postman中新建一个GET请求用于测试,GET请求的请求路径如下
1 | http://localhost:8080/listParam?hobby=game&hobby=java&hobby=sing |
controller控制类中添加的代码如下
1 |
|
重新启动并清空控制台,方便查看输出结果,直接点击Postman的send,发现成功输出OK。
再返回IDEA的控制台查看,发现成功输出了 [game, java, sing]
3)小结
数组:请求参数名与形参中数组变量名相同,可以直接使用数组封装
集合:请求参数名与形参中集合变量名相同,通过@RequestParam绑定参数关系
3.4 日期参数 & JSON参数
1)日期参数
使用 @DateTimeFormat注解完成日期参数格式转换
具体步骤如下:
Postman中新建一个GET请求用于测试,请求路径(即url)如下
1 | http://localhost:8080/dateParam?updateTime=2024-03-20 15:06:45 |
controller控制类中添加的代码如下
1 |
|
重新启动并清空控制台,方便查看输出结果,直接点击Postman的send,发现成功输出OK。
再返回IDEA的控制台查看,发现成功输出了时间
2)JSON参数
JSON数据键名与形参对象属性名相同,定义POJO类型形参即可接收参数,需要使用@RequestBody标识
具体步骤如下:
Postman中新建一个POST请求用于测试,请求路径(即url)如下
1 | http://localhost:8080/jsonParam |
选择Body ->row ->json,添加 json格式的数据
1 | { |
controller控制类中添加的代码如下
1 | // JSON参数 |
重新启动并清空控制台,方便查看输出结果,直接点击Postman的send,发现成功输出OK。
再返回IDEA的控制台查看,发现成功输出了集合数据
注:用到的两个pojo实体类如下,分别提供对应的 get、set和 toString方法
(User类)
1 | package com.itweb.pojo; |
(Address类)
1 | package com.itweb.pojo; |
3.5 路径参数
路径参数
通过请求URL直接传递参数,使用{..}来标识该路径参数,需要使用 @PathVariable 获取路径参数
相关的代码演示同上,不再赘述。
4、响应
4.1 响应数据
图解如下
4.2 @ResponseBody
1)类型
方法注解、类注解
2)位置
Controller方法上/类上
3)作用
将方法返回值直接响应,如果返回值类型是实体对象/集合,将会转换为JSON格式响应
4)说明
@RestController = @Controller +@ResponseBody
5)两种方式
1、未统一前,如下
2、统一响应结果 -> Result (code,msg,data)