当前位置: 首页 > 后端技术 > Java

SpringBoot参数请求方式

时间:2023-04-01 14:07:26 Java

我们希望我们的参数能像想象中一样正常的发送到后端接口,但是post、get和各种引用API很容易混淆。下面说说我的理解。1、前端传参方式可以把参数放在header里,也可以放在地址里,也可以放在body里,但是一般只在header里放一些校验参数。1.1get请求get请求一般只允许在url末尾拼接参数,比如http://localhost:9003/mid/app/queryTagByMenu?name=1ge??t请求也可以把参数放在path中,比如http://localhost:9003/mid/app/queryTagByMenu/11.2post请求get请求可以把参数放在路径里,比如http://localhost:9003/mid/app/queryTagByMenu/1post请求可以把参数放在请求体,或者把参数拼接在url末尾2.后端连接方式2.1@PathVariable前端参数如:http://localhost:9003/test/1/chen,你需要使用此注解接收参数。@RequestMapping("test/{id}/{name}")publicvoidtest(@PathVariable("id")Longid,@PathVariable("name")Stringname){System.out.println(id,name);}2.2@RequestParam前端j将参数拼接在url的末尾,如:http://localhost:9003/mid/app/queryTagByMenu?name=1,需要使用该注解来接收参数。如果使用这个注解,url中必须要有这个参数,否则会报400错误。@PostMapping("/queryTagByMenu")publicAjaxResultqueryTagByMenu(@RequestParamStringmenuId){if(StringUtil.isEmpty(menuId)){returnAjaxResult.error("缺少menuId参数");}returnAjaxResult.success();}2.3@RequestBody前端使用post方法将参数写在body中,可以根据属性名使用map或者实体类接收。@PostMapping("/queryMenuByRole")publicAjaxResultqueryMenuByRole(@RequestBodyAppMenuRoleVoappMenuRoleVo){returnAjaxResult.success(appSysService.queryMenuListByRole(appMenuRoleVo));}2.4不带注解接收参数有人说不带注解也能正常接收参数,我试了一会儿,发现post收不到参数。下面我们尝试使用get来传递参数,发现get可以自动组装成实体类。get请求同样适用于单参数不带注解的情况。2.5@RequestHeader@CookieValue这两个用法差不多,我用的比较少。基本上,如果我需要从标头中获取参数,我通常会从请求中获取它们。@GetMapping("/test")publicvoiddemo3(@RequestHeader(name="headerName")StringheaderName,@CookieValue(name="cookieName")StringcookieName){System.out.println(myHeader+"--"+cookieName);}看到这里,你大概对前后端传参有了一些了解,欢迎留言讨论。个人博客:https://www.51bishe.site

最新推荐
猜你喜欢