SpringBoot在Controller层接收参数的n种姿势(超详细)
是阿俏同学吖 人气:0前言
在工作中,比如要实现一个功能,前端传什么参数,后端的controller
层中怎么接收参数 ,封装成了什么实体对象,有些参数是在URL上使用,有些参数是在body上使用,service层中做了什么逻辑,调用dao层的sql怎么写的,前端传的参数,后端用controller中的一个方法来接收请求这些都是我们需要思考的逻辑!
下面重点讲下SpringBoot
接收请求的n种姿势,建议收藏哦~
接收get请求
(1)get请求无参数
@RestController @RequestMapping("book") public class BookController { @Resource private BookService bookService; /** * 按照条件获取书籍信息 * @param bookParams * @return */ @GetMapping("/getBookLists") @ResponseBody public CommonResponse<List<Book>> getBookLists(BookParams bookParams) { // 按照查询条件分页查询书籍 List<Book> books = bookService.getBookList(bookParams); CommonResponse response = CommonResponse.successInstance(books); return response; } }
获取参数方式1:http://localhost:9527/book/getBookLists这种方式的请求,不带参数
(2)get请求问号拼的参数
使用@RequestParam
来取问号后面拼接的参数,告诉springboot 这个user对应的就是参数中的user
@RequestMapping("/get") public void get (@RequestParam(name = "user") String user){ System.out.println("接收到参数:"+user); return "接收到参数:"+user; }
获取参数方式2:获取http://localhost:9527?user=XXX问号拼接的参数
(3)get请求路径URL参数@PathVariable
是取url中的变量 ,会自动进行赋值。
@GetMapping("/path/{user}") public String path(@PathVariable(name = "user") String user){ System.out.println("接收到参数:"+user); return "接收到参数:"+user; }
获取参数方式3:获取路径参数,RestFull风格入参
接收post请求
(1) 请求的参数是json格式 ,各参数名与实体类定义的字段一致@RequestBody
将参数映射为一个java对象
@PostMapping("/post/same") public String same(@RequestBody Users users){ System.out.println("JSON 接到的:"+users.toString()); return "JSON 接到的:"+users.toString(); }
获取参数方式1:post请求JSON数据格式,各参数名与实体类定义的字段一样
(2)请求JSON数据格式,各参数名与实体类定义的字段完全不一样(需要引入fastJson依赖
)
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.57</version> </dependency>
@PostMapping("/fastJson") public String fastJson(@RequestBody JSONObject param){ System.out.println("JSON :"+param.toJSONString()); return "JSON :"+param.toJSONString(); }
获取参数方式2:post请求JSON数据格式,各参数名与POJO定义的字段完全不一样(需要引入fastJson依赖)
(3)post请求的参数名都对应可以直接获取
@RequestMapping("/sameParamName") public String sameParamName(String users , String id){ System.out.println("users:"+users+"id: "+id); return "users:"+users+"id: "+id; }
加载全部内容