咱们心愿咱们的参数可能依照咱们构想的、失常的发送到后端接口,然而post、get和各种接参的api容易让人迷糊,上面我说下本人的了解。

1、前端传参形式

传参能够将参数放到header外面,也能够拼到地址中,或者放在body中,不过个别header中只放一些校验的参数。

1.1 get申请

get申请个别只容许在url尾部拼接参数,如http://localhost:9003/mid/app/queryTagByMenu?name=1

get申请也能够将参数放到门路中,如http://localhost:9003/mid/app/queryTagByMenu/1

1.2 post申请

get申请能够将参数放到门路中,如http://localhost:9003/mid/app/queryTagByMenu/1

post申请即能够把参数放到申请体中,也能够把参数拼接到url尾部

2、后端接参形式

2.1 @PathVariable

前端传参如:http://localhost:9003/test/1/chen,须要应用此注解接管参数。

@RequestMapping("test/{id}/{name}")public void test(@PathVariable("id") Long id ,@PathVariable("name") String name){  System.out.println(id, name);}
2.2 @RequestParam

前端j将参数拼接到url尾部的,如:http://localhost:9003/mid/app/queryTagByMenu?name=1,须要应用此注解接管参数。

如果应用此注解,则url中必须有这个参数,否则会报400谬误。

@PostMapping("/queryTagByMenu")public AjaxResult queryTagByMenu(@RequestParam String menuId) {  if (StringUtil.isEmpty(menuId)) {    return AjaxResult.error("短少menuId参数");  }  return AjaxResult.success();}
2.3 @RequestBody

前端应用post形式,将参数写在body中的,能够依照属性名,应用map或者实体类接管。

@PostMapping("/queryMenuByRole")public AjaxResult queryMenuByRole(@RequestBody AppMenuRoleVo appMenuRoleVo) {  return AjaxResult.success(appSysService.queryMenuListByRole(appMenuRoleVo));}
2.4 无注解接管参数

有人说无注解也能够失常接管参数,我试了一下,发现post是无奈接管参数的。

上面试试应用get传参数,发现get是能够主动组装成实体类的。

get申请也实用于单参数无注解的状况。

2.5 @RequestHeader @CookieValue

这两个用法都差不多,我用的比拟少,基本上如果我须要从header中获取参数的话,个别我是从request中获取。

@GetMapping("/test")public void demo3(@RequestHeader(name = "headerName") String headerName,  @CookieValue(name = "cookieName") String cookieName) {    System.out.println(myHeader + "--" + cookieName);}

看到这里,大家大略对前后端参数传递有了一些理解,欢送留言探讨。

集体博客:https://www.51bishe.site