SpringBoot请求参数

154 阅读2分钟

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中参数

image-20220107134252207.png

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>

当校验不通过时,会抛出异常

image-20220107135529083.png

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格式的参数时可以正常接收

image-20220107140149653.png

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());
    }

上传时直接通过表单提交

image-20220107140503691.png