获取请求参数并响应:
响应:
在Controller类或方法上加上@ResponseBody注解,可以将方法返回值直接响应,如果返回值是实体对象或者集合,将转换为json格式响应。如下例:
@RestController=@ResponseBody+@Controller;(@Controller只能作用与类上)
将返回信息进行封装,固定响应信息的格式。
public class Result {
private int code;
private String msg;
private Object data;
public static Result success(Object data){
return new Result(1,"success",data);
}
public static Result success(){
return new Result(1,"success",null);
}
public static Result error(String msg){
return new Result(0,msg,null);
}
public Result(int code, String msg, Object data) {
this.code = code;
this.msg = msg;
this.data = data;
}
public Result() {
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
@Override
public String toString() {
return "Result{" +
"code=" + code +
", msg='" + msg + '\'' +
", data=" + data +
'}';
}
}
获取请求参数
- 简单参数:
定义方法形参,请求参数名与形参变量名一致。
如果不一致,通过@RequestParam手动映射。
数据传递要使用基本类型的包装类,否则不传递此数据会报错,当使用了@RequestParam映射时,required默认为true,则此参数必须传递
@RestController
public class getParameter {
@RequestMapping("/user/getUser")
// 数据传递要使用基本类型的包装类,否则不传递此数据会报错,当使用了@RequestParam映射时,required默认为true,则此参数必须传递
public Result test1(@RequestParam(value="name",required=false) String username, Integer age){
System.out.println(username+":"+age);
return Result.success(username+":"+age);
}
}
- 实体参数:
请求参数名,与实体对象的属性名一致,会自动接收封装参数。
//生成toString、set和get方法,如果生成了构造方法,一定要提供一个无参构造函数
public class User {
private String name;
private Integer age;
private Integer sex;
private Address address;
}
public class Address {
private String privence;
private String city;
}
@RequestMapping("/user/userObjectParameter")
public Result test3(User user){
System.out.println(user);
return Result.success(user);
}
- 数组集合参数:
数组:请求参数名与数组名一致,直接封装。
集合:请求参数名与集合名一致,@RequestParam绑定关系
// 数组
@RequestMapping("/user/array")
public Result test4(String[] habby){
System.out.println(Arrays.toString(habby));
return Result.success(habby);
}
// 集合
@RequestMapping("/user/list")
public Result test5(@RequestParam List<String> habby){
System.out.println(habby);
return Result.success(habby);
}
- 日期参数:
使用@DateTimeFormat定义接收日期的格式。
// 时间,根据ISO 8601规范,日期和时间之间应该用大写字母"T"分隔。
@RequestMapping("/user/date")
public Result test6(@DateTimeFormat(pattern="yyyy-MM-dd HH-mm-ss") LocalDateTime date){
System.out.println(date);
return Result.success(date.toString().replace("T"," "));
}
- JSON参数:
使用@RequestBody绑定关系(注意请求方式为post)
// json
@RequestMapping("/user/json")
public Result test7(@RequestBody User user){
System.out.println(user);
return Result.success(user);
}
- 路径参数
使用@PathVariable绑定关系
// 路径参数
@RequestMapping("/userPath/{id}/{name}")
public Result test8(@PathVariable String id, @PathVariable String name){
System.out.println(id + ":" + name);
return Result.success(id+":"+name);
}