1.接收URL中占位符的值
Spring3.0之后可以通过@PathVariable来接收URL中的占位符
接收占位符方式如下:
@GetMapping(value = "/param/{username}",produces = MediaType.APPLICATION_JSON_VALUE)
@ApiOperation(value = "获取url中参数")
public ResponseMessage<String> getUrlParam(@PathVariable("username") String username) {
log.debug("获取到前端参数:{}",username);
return ResponseMessage.success(username);
}
这样我们可以获取请求的url中参数
2.参数校验
在实际开发中,我们常常需要对传入的参数有效性进行校验,为了不在Controller方法中逐一判断每一个参数,可以使用@Valid注解来进行参数校验
在方法的参数前面添加@Valid注解
@GetMapping(value = "/paramCheck",produces = MediaType.APPLICATION_JSON_VALUE)
@ApiOperation(value = "参数校验")
public ResponseMessage<UserVO> paramCheck(@Valid UserVO userVO) {
return ResponseMessage.success(userVO);
}
然后在入参类的属性中添加具体的校验规则
@Data
@ApiModel(description = "用户类")
public class UserVO {
@ApiModelProperty("用户编号")
private Long id;
@NotNull
@Size(min = 3, max = 10)
@ApiModelProperty("用户姓名")
private String name;
@NotNull
@Max(100)
@Min(10)
@ApiModelProperty("用户年龄")
private Integer age;
@NotNull
@Email
@ApiModelProperty("用户邮箱")
private String email;
}
使用这些规则需要添加hibernate-validator依赖
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.1.7.Final</version>
</dependency>
当校验不通过时,会抛出异常
3.解析XML格式参数
当接口传入的参数类型为xml格式时,需要进行转换,在接口方法中添加consumes属性
@PostMapping(value = "/createUser", consumes = MediaType.APPLICATION_XML_VALUE)
@ApiOperation(value = "解析前端xml格式的参数")
public ResponseMessage<UserXmlVO> createUser(@RequestBody UserXmlVO userXmlVO) {
log.debug("参数:{}",userXmlVO);
return ResponseMessage.success(userXmlVO);
}
xml格式转换需要添加相关的依赖包
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.13.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.13.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.13.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-jaxb-annotations</artifactId>
<version>2.13.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>2.13.1</version>
</dependency>
这是传入xml格式的参数时可以正常接收
4.文件上传
文件上传需要使用MultipartFile类,在参数前面添加@RequestPart注解
@PostMapping("/upload")
@ApiOperation(value = "文件上传")
public ResponseMessage upload(@RequestPart MultipartFile file) throws IOException {
String fileName = file.getOriginalFilename();
String filePath = "D://" + fileName;
File dest = new File(filePath);
Files.copy(file.getInputStream(), dest.toPath());
return ResponseMessage.success("Upload file success : " + dest.getAbsolutePath());
}
上传时直接通过表单提交