@PathVariable(路径变量)注解的使用
带占位符的 URL 是 Spring3.0 新增的功能,该功能在SpringMVC 向 REST 目标挺进发展过程中具有里程碑的意义。
@PathVariable(“xxx”)
通过 @PathVariable 可以将URL中占位符参数{xxx}绑定到处理器类的方法形参中@PathVariable(“xxx“)
@RequestMapping(value=”user/{id}/{name}”)
请求路径:http://localhost:8080/hello/show5/1/james
@RequestParam:
@RequestParam:将请求参数绑定到你控制器的方法参数上(是springmvc中接收普通参数的注解)
语法:@RequestParam(value=”参数名”,required=”true/false”,defaultValue=””)
value:参数名
required:是否包含该参数,默认为true,表示该请求路径中必须包含该参数,如果不包含就报错。
defaultValue:默认参数值,如果设置了该值,required=true将失效,自动为false,如果没有传该参数,就使用默认值
@RequestBody
@requestBody注解常用来处理content-type不是默认的application/x-www-form-urlcoded编码的内容,比如说:application/json或者是application/xml等。一般情况下来说常用其来处理application/json类型。@RequestBody接受的是一个json格式的字符串,一定是一个字符串。
GET、POST方式提时, 根据request header Content-Type的值来判断:
① application/x-www-form-urlencoded, 可选(即非必须,因为这种情况的数据@RequestParam, @ModelAttribute也可以处理,当然@RequestBody也能处理)
②multipart/form-data, 不能处理(即使用@RequestBody不能处理这种格式的数据)
③ 其他格式, 必须(其他格式包括application/json, application/xml等。这些格式的数据必须使用@RequestBody来处理);
PUT方式提交时, 根据request header Content-Type的值来判断:
application/x-www-form-urlencoded, 必须;
multipart/form-data, 不能处理;
其他格式, 必须;
说明:request的body部分的数据编码格式由header部分的Content-Type指定;
注意:
前端的请求头中的Content-Type设置的是json格式的,而json格式需要对应post请求的接口参数需要对应是@RequestBody;
如果想使用RequestParam,那么则需要前端的Content-Type要设置成application/x-www-form-urlencoded类型。
前端请求示例:
export function getTreeAll (id) {
return request({
url: '/api/sys/dept/tree/gettreeall',
method: 'post',
params: {
id
}
})
}
后端接收示例:
@PostMapping("gettreeall")
@ApiOperation("取所有机构节点")
public Result> getDeptTreeAll(String rootId) {
}
加一种后台接收单个参数情况:
对应后台代码:public Result check(@RequestBody String id)
也可以使用@RequestBody进行接收 text和json都能接收
前端请求示例:
export function setDeptRoleDefault (id) {
return request({
url: '/sys/sys_role_v2/dept_default_role/' + id+'/'+"第二个参数",
method: 'put'
})
}
后端接收示例:
@PutMapping("commom_default_role/{id}")
@ApiOperation("启用")
@LogOperation("启用")
public Result setCommonDefaultRole(@PathVariable("id") String id,@PathVariable('"第二个参数')String 第二个参数) {
System.out.println(id);
sysRoleService.setCommomDefaultRole(id);
return (new Result()).ok("ok");
}
前端请求示例:
export function deletePublicRoleGroup (data) {
return request({
url: 'sys/sys_role_class',
method: 'delete',
data
})
}
后端请求示例:
@DeleteMapping
@ApiOperation("删除")
@LogOperation("删除")
public Result delete(@RequestBody Long[] ids, String type) {
//效验数据
AssertUtils.isArrayEmpty(ids, "id");
sysRoleService.delete(ids, type);
return new Result();
}