日期参数
需要在控制类使用@DateTimeFormat注解
package com.ming.controller;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.time.LocalDateTime;
@RestController
public class Requsetcontroller {
@RequestMapping("/dataParam")
public String dataParam(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")LocalDateTime updateTime){
System.out.println(updateTime);
return "OK";
}
}
在postman中使用get请求 返回ok

在idea中我们可以看见返回的数据

注意 @DateTimeFormat中的pattern 必须使用yyyy-MM-dd HH:mm:ss 否则会报错
接受json格式的参数
json格式的数据要放在请求体当中的
json中所有的数据都要用双引号
json数据的键名与形参对象属性名相同,定义POJO类型形参即可接收参数,需要使用@RequestBody
@RequestBody这个注解将json格式的数据封装到实体对象当中
其中的user类
package com.ming.pojo;
public class User {
private String name;
private int age;
private Address address;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
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 +
'}';
}
}
其中的address类
package com.ming.pojo;
public class Address {
private String province;
private String city;
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
@Override
public String toString() {
return "Address{" +
"province='" + province + '\'' +
", city='" + city + '\'' +
'}';
}
}
然后是请求类
package com.ming.controller;
import com.ming.pojo.User;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class Requsetcontroller {
@RequestMapping("/jsonParam")
public String jsonParam(@RequestBody User user){
System.out.println(user);
return "OK";
}
}
运行以后在postman 将测试的json格式数据写到body里面的raw里面

在idea控制台我们可以看见数据

路径参数
路径参数:通过请求URL直接传递参数,使用{...}来标识,需要使用@PathVariable获取路径
package com.ming.controller;
import com.ming.pojo.User;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class Requsetcontroller {
@RequestMapping("/path/{id}")
public String PathParam(@PathVariable Integer id){
System.out.println(id);
return "OK";
}
}
在postman中设置路径

然后路径id被打印到了Java控制台

那么如何传递多个参数呢?
我们在方法中加入多个变量即可并且在注解中加入该变量 例如 /path/{id}/{name}
注意 每一个方法变量前面都需要添加@PathVariable
package com.ming.controller;
import com.ming.pojo.User;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class Requsetcontroller {
@RequestMapping("/path/{id}")
public String PathParam(@PathVariable Integer id){
System.out.println(id);
return "OK";
}
@RequestMapping("/path/{id}/{name}")
public String PathParam(@PathVariable Integer id,@PathVariable String name){
System.out.println(id+":"+name);
return "OK";
}
}
在get请求中输入 http://localhost:8080/path/1/张三

在Java控制台中的结果为
