SpringBoot Controller接收参数的几种常用方式
作者:猴猴小扣
这篇文章主要介绍了SpringBoot Controller接收参数的几种常用方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
SpringBoot Controller接收参数的常用方式
在Controller中加入@RestController
,效果等于@Controller
+ @ResponseBody
。
1 请求路径参数
直接把表单里面的参数写进 Controller 相应方法的形参中去,这个获取参数的方法适合get提交,而不适合post提交。
@PathVariable
获取(这个当然不分get和post了,是url提取嘛)
@RequestMapping("/userInfo/{id}") public String userInfo(@PathVariable String id) { System.out.println(id); return id; }
http://localhost:8080/userInfo/142857
@RequestParam
获取查询参数,如url?id=1428571
- 当请求参数名与方法形参变量名相同时,可不加
@RequestParam
注解 @RequestParam
注解的required属性默认为true,若参数不是必须传递需改为false
@RequestMapping("/userInfo") public String userInfo(@RequestParam(name = "id") String id) { System.out.println(id); return id; }
http://localhost:8080/userInfo?id=12345671
2 实体参数
通过建立一个bean
来获取参数:
package com.example.helloworld.model; public class User { private String id; private String name; private Notebook notebook; User(String id, String name) { this.id = id; this.name = name; this.notebook = new Notebook(); } public String getName() { return name; } }
@RequestMapping("/userInfo") public String userInfo(User user) { System.out.println(user.getName()); return user.getName(); }
http://localhost:8080/problemBook?id=142857&time=2022-01-01 00:00:00
3 日期参数
http://localhost:8080/problemBook?id=142857&time=2022-01-01 00:00:00
@RequestMapping("/problemBook") public String problemBook(String id, @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime time) { System.out.println(id); System.out.println(time); return "OK"; }
但“yyyy-MM-dd”就识别有问题……
4 Json Body参数
通常用于Post请求。
使用RequestBody
注解。
@PostMapping("/finishProblem") public String finishProblem(@RequestBody User user) { System.out.println(user.getName()); return "OK"; }
也可以使用一个map接收:
@PostMapping("/finishProblem") public String finishProblem(@RequestBody Map<String, String> params) { System.out.println(params.get("uid")); System.out.println(params.get("problemId")); return "OK"; }
5 返回结果
@ResponseBody
用于Controller类或者方法上,将方法返回值直接响应,若返回值类型是实体对象或者集合,将转为json格式相应。
为了有统一的返回方式,定义统一响应结果Result
。
package com.example.helloworld.controller; /** * code response状态码 * obj 返回给前端的数据 * message 附加信息,说明具体情况 */ public class Result { public int code; public String message; public Object data; public Result(int code, String message, Object data) { this.code = code; this.message = message; this.data = data; } public static Result success(Object data) { return new Result(200, "success", data); } public static Result success() { return new Result(200, "success", null); } public static Result error(String message) { return new Result(404, message, null); } }
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。