什么是请求响应:
- 请求:获取请求数据
- 响应:设置相应数据
- BS框架:Browser/Server,浏览器/服务器架构模式。客户端只需要浏览器,应用程序的逻辑和数据都存在服务端。
- CS架构:Client/Server.客户端/服务器架构模式。(要下载客户端)
一、Postman
1、下载
Postman是一款功能强大的网页调试与发送页面的HTTP请求的Chrome插件,常用于接口调试。
链接:https://pan.baidu.com/s/1S8oiRrH_egjo80KCBS5IAA?pwd=yc7f
提取码:yc7f
下载完成后,直接双击安装。安装完成后的页面如下:(完成后自己注册登录)
2、使用
运行在javaweb_04中写的springboot的SpringbootApplication中的代码
在Postman中创建工作空间:
请求完成后,可以点击save保存该页面。
保存好之后,界面如下:
二、简单参数
在请求服务端时,传递的是一些普通的请求数据。
1、原始方式请求参数
在原始的web程序中,获取请求参数,需要通过HttpServletRequest
对象手动获取。
创建了一个新模块,并且写了一个新的controller函数去传递消息
新建类,并在该类类中书写代码,完成后运行该项目的启动类:
package org.example.controller;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.HttpServletRequest;@RestController
public class RequestController {//原始方式@RequestMapping("/simpleParam")public String simpleParam(HttpServletRequest request){//通过request获取请求参数String name = request.getParameter("name");String strAge = request.getParameter("age");int age = Integer.parseInt(strAge);System.out.println(name + ":" +age);return "ok";}
}
运行起来后在postman中做测试:
2、pringboot中接受简单参数
注意请求的参数名与代码中的形参名一定保持一致就可以成功
简单参数:参数名与形参变量名相同,定义形参即可接收参数。
package org.example.controller;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.HttpServletRequest;@RestController
public class RequestController {//原始方式
// @RequestMapping("/simpleParam")
// public String simpleParam(HttpServletRequest request){
// //通过request获取请求参数
// String name = request.getParameter("name");
// String strAge = request.getParameter("age");
// int age = Integer.parseInt(strAge);
// System.out.println(name + ":" +age);
// return "ok";
// }@RequestMapping("/simpleParam")public String simpleParam(String name,Integer age){System.out.println(name + ":" +age);return "okkkkkkk~";}
}
运行结果:
使用Post发送请求(代码不变):
三、实体参数
1、简单实体对象
请求参数名与形参对象属性名相同(封装成功的要点)。定义POJO接收即可(将参数封装在实体对象中)
①准备一个user类去封装输出的参数
package org.example.pojo;//实体类
public class User {private String name;private Integer age;public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}@Overridepublic String toString() {return "User{" +"name='" + name + '\'' +", age=" + age +'}';}
}
②在requestController中定义方法去使用user:
package org.example.controller;import org.example.pojo.User;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.HttpServletRequest;@RestController
public class RequestController {//原始方式
// @RequestMapping("/simpleParam")
// public String simpleParam(HttpServletRequest request){
// //通过request获取请求参数
// String name = request.getParameter("name");
// String strAge = request.getParameter("age");
// int age = Integer.parseInt(strAge);
// System.out.println(name + ":" +age);
// return "ok";
// }@RequestMapping("/simpleParam")public String simpleParam(String name,Integer age){System.out.println(name + ":" +age);return "okkkkkkk~";}//2、实体参数@RequestMapping("/simplePojo")public String simplePojo(User user){System.out.println(user);return "successful";}
}
③启动当前服务,在postman中查看
2、复杂实体对象
请求参数名与形参对象属性名相同,按照对象层次结构关系即可接收嵌套POJO属性参数
四、数组集合参数
在表单中有复选框,可以勾选多个值,要将多个值提交,就得使用数组集合参数。
1、数组参数
请求参数名与形参数组名称相同且请求参数为多个,定义数组类型形参即可接收参数。
//数组集合参数@RequestMapping("/arrayParam")public String arrayParam(String []hobby){System.out.println(Arrays.toString(hobby));return "successful";}
运行,在postman中send之后:
2、集合参数
五、日期时间参数
使用@DataTimeFormat
注解完成日期参数格式转换
//日期时间参数@RequestMapping("/dataParam")public String dataParam(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime updataTime){System.out.println(updataTime);return "成功发送时间";}
六、Json参数(Post)
json数据键名与形参对象属性名相同,定义POJO类型形参即可接收参数,需要使用@RequestBody
标识
//json参数@RequestMapping("/jsonParam")public String jsonParam(@RequestBody User user){System.out.println(user);return "json参数发送成功";}
User类:
package org.example.pojo;//实体类
public class User {private String name;private Integer age;private Address address;public Address getAddress() {return address;}public void setAddress(Address address) {this.address = address;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}@Overridepublic String toString() {return "User{" +"name='" + name + '\'' +", age=" + age +", address=" + address +'}';}
}
Address类:
package org.example.pojo;public class Address {private String province;private String ctiy;@Overridepublic String toString() {return "Address{" +"province='" + province + '\'' +", ctiy='" + ctiy + '\'' +'}';}public String getProvince() {return province;}public void setProvince(String province) {this.province = province;}public String getCtiy() {return ctiy;}public void setCtiy(String ctiy) {this.ctiy = ctiy;}
}
七、路径参数
1、单个参数
通过请求URL直接传递参数,使用{...}
来标识该路径参数,需要使用@PathVariable
获取路径参数(类似翻页)
//路径参数@RequestMapping("/path/{id}")public String pathParam(@PathVariable Integer id){System.out.println(id);return "发送成功";}
2、多个参数
//路径参数@RequestMapping("/path/{id}/{name}")public String pathsParam(@PathVariable Integer id,@PathVariable String name){System.out.println(id + ":" + name);return "多个参数发送成功";}