SpringBoot笔记
接收前端参数
请求路径参数
请求路径 可以简化成@PathVariable Integer id
@GetMapping ( value = "/test/{id}" )
public String test ( @PathVariable ( "id" ) Integer id) {
return "id:" + id;
}
请求参数
http://localhost:8080/test?name=zhangsan
@GetMapping ( value = "/test" )
public String test1 ( @RequestParam ( "name" ) String name) {
return name;
}
@PostMapping ( value = "/test" )
public String test2 ( @RequestParam ( "name" ) String name) {
return name;
}
@RequestParam ( value = "name" , required = false , defaultValue = "Tim" ) String name
请求参数名和方法的参数名一致时,可以省略@RequestParam
@RequestParam Map<String, Object> params,可以,但不推荐
请求体
请求的json参数可以不完全与接收的对象(DTO
)完全匹配,下面的请求体都是ok的,多的忽略,少的补默认值
{
"name" : "lisi" ,
"age" : 16 ,
"id" : 2332
}
{
"name" : "lisi"
}
@RequestBody
一般搭配post请求,很少与get请求搭配注意:RestTemplate
无法发送带RequestBody的get请求,只能是post
@RestController
public class ControllerTest {
@PostMapping ( value = "/test" )
public Person test1 ( @RequestBody Person person) {
return person;
}
@GetMapping ( value = "/test" )
public Person test2 ( @RequestBody Person person) {
return person;
}
}
@Data
class Person {
private String name;
private int age;
}
@PostMapping ( "/test" )
public String test3 ( @RequestBody List< Person> personList) {
return personList. toString ( ) ;
}
[
{
"name" : "zhangsan" ,
"age" : 18
} ,
{
"name" : "lisi" ,
"age" : 19
}
]
接收复杂json,用String
或 JSONObject
(需要添加fastjson
依赖)
@PostMapping ( "/test" )
public String test4 ( @RequestBody String json) {
return json;
}
@PostMapping ( "/test" )
public String test5 ( @RequestBody JSONObject param) {
return "test" ;
}
{
"id" : 3 ,
"personList" : [
{
"name" : "zhangsan" ,
"age" : 18
} ,
{
"name" : "lisi" ,
"age" : 19
}
]
}
其他
@CookieValue
consumes
和 produces
@RequestMapping ( value = "/test" , consumes = "application/json" , produces = "application/json" )