网站可视化后台,桥西区网站建设,互联网舆情监测中心,阿里云 企业网站1. 请求
在本章节呢#xff0c;我们主要讲解#xff0c;如何接收页面传递过来的请求数据。
1.1 Postman
之前我们课程中有提到当前最为主流的开发模式#xff1a;前后端分离 在这种模式下#xff0c;前端技术人员基于接口文档#xff0c;开发前端程序…1. 请求
在本章节呢我们主要讲解如何接收页面传递过来的请求数据。
1.1 Postman
之前我们课程中有提到当前最为主流的开发模式前后端分离 在这种模式下前端技术人员基于接口文档开发前端程序后端技术人员也基于接口文档开发后端程序。
由于前后端分离对我们后端技术人员来讲在开发过程中是没有前端页面的那我们怎么测试自己所开发的程序呢
方式1像之前SpringBoot入门案例中一样直接使用浏览器。在浏览器中输入地址测试后端程序。 弊端在浏览器地址栏中输入地址这种方式都是GET请求如何我们要用到POST请求怎么办呢 要解决POST请求需要程序员自己编写前端代码比较麻烦
方式2使用专业的接口测试工具课程中我们使用Postman工具
1.1.1 介绍 Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件。 Postman原是Chrome浏览器的插件可以模拟浏览器向后端服务器发起任何形式(如:get、post)的HTTP请求 使用Postman还可以在发起请求时携带一些请求参数、请求头等信息 作用常用于进行接口测试 特征 简单 实用 美观 大方 1.1.2 安装 双击资料中提供的Postman-win64-8.3.1-Setup.exe即可自动安装。 安装完成之后进入页面中会提示有新版本可以升级无需升级 界面介绍: 如果我们需要将测试的请求信息保存下来就需要创建一个postman的账号然后登录之后才可以。 登录完成之后可以创建工作空间 创建请求 点击Save保存当前请求 1.2 简单参数
简单参数在向服务器发起请求时向服务器传递的是一些普通的请求数据。 那么在后端程序中如何接收传递过来的普通参数数据呢
我们在这里讲解两种方式 原始方式 SpringBoot方式
1.2.1 原始方式
在原始的Web程序当中需要通过Servlet中提供的APIHttpServletRequest请求对象获取请求的相关信息。比如获取请求参数 Tomcat接收到http请求时把请求的相关信息封装到HttpServletRequest对象中 在Controller中我们要想获取Request对象可以直接在方法的形参中声明 HttpServletRequest 对象。然后就可以通过该对象来获取请求信息
//根据指定的参数名获取请求参数的数据值
String request.getParameter(参数名)
RestController
public class RequestController {//原始方式RequestMapping(/simpleParam)public String simpleParam(HttpServletRequest request){// http://localhost:8080/simpleParam?nameTomage10// 请求参数 nameTomage10 有2个请求参数// 第1个请求参数 nameTom 参数名:name参数值:Tom// 第2个请求参数 age10 参数名:age , 参数值:10
String name request.getParameter(name);//name就是请求参数名String ageStr request.getParameter(age);//age就是请求参数名
int age Integer.parseInt(ageStr);//需要手动进行类型转换System.out.println(name : age);return OK;}
} 以上这种方式我们仅做了解。在以后的开发中不会使用到 1.2.2 SpringBoot方式
在Springboot的环境中对原始的API进行了封装接收参数的形式更加简单。 如果是简单参数参数名与形参变量名相同定义同名的形参即可接收参数。
RestController
public class RequestController {// http://localhost:8080/simpleParam?nameTomage10// 第1个请求参数 nameTom 参数名:name参数值:Tom// 第2个请求参数 age10 参数名:age , 参数值:10//springboot方式RequestMapping(/simpleParam)public String simpleParam(String name , Integer age ){//形参名和请求参数名保持一致System.out.println(name : age);return OK;}
}
postman测试( GET 请求) postman测试( POST请求 ) 结论不论是GET请求还是POST请求对于简单参数来讲只要保证请求参数名和Controller方法中的形参名保持一致就可以获取到请求参数中的数据值。 1.2.3 参数名不一致
如果方法形参名称与请求参数名称不一致controller方法中的形参还能接收到请求参数值吗
RestController
public class RequestController {// http://localhost:8080/simpleParam?nameTomage20// 请求参数名name
//springboot方式RequestMapping(/simpleParam)public String simpleParam(String username , Integer age ){//请求参数名和形参名不相同System.out.println(username : age);return OK;}
}
答案运行没有报错。 controller方法中的username值为nullage值为20 结论对于简单参数来讲请求参数名和controller方法中的形参名不一致时无法接收到请求数据
那么如果我们开发中遇到了这种请求参数名和controller方法中的形参名不相同怎么办
解决方案可以使用Spring提供的RequestParam注解完成映射
在方法形参前面加上 RequestParam 然后通过value属性执行请求参数名从而完成映射。代码如下
RestController
public class RequestController {// http://localhost:8080/simpleParam?nameTomage20// 请求参数名name
//springboot方式RequestMapping(/simpleParam)public String simpleParam(RequestParam(name) String username , Integer age ){System.out.println(username : age);return OK;}
} 注意事项 RequestParam中的required属性默认为true默认值也是true代表该请求参数必须传递如果不传递将报错 如果该参数是可选的可以将required属性设置为false RequestMapping(/simpleParam)
public String simpleParam(RequestParam(name name, required false) String username, Integer age){
System.out.println(username : age);
return OK;
}