赞
踩
需求:用SpingBoot+Swagger+Hibernate-Validate集成一个demo,用Swagger查看Controller的接口文档。Swagger接口包括Controller的请求和返回,用Hibernate-Validate校验Controller的请求参数的合法性。目前只需要校验非空即可。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
package com.example.swaggerdemo.domain; import javax.validation.constraints.*; public class User { @NotBlank(message = "名称不能为空哦") private String name; @NotNull(message = "年龄不能为空哦") @Max(message = "最大为150哦",value = 150) @Min(message = "最小为0哦",value = 0) private Integer age; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } }
@NotBlank 只能注解String字符串类型 @NotNull可以注解在Integer类型
package com.example.swaggerdemo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import springfox.documentation.oas.annotations.EnableOpenApi; @SpringBootApplication @EnableOpenApi public class SwaggerdemoApplication { public static void main(String[] args) { SpringApplication.run(SwaggerdemoApplication.class, args); } }
@EnableOpenApi 注解用于开启swagger
package com.example.swaggerdemo.controller; import com.example.swaggerdemo.domain.User; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/system/user") //@Api(tags = "用户管理",value = "用户管理") @Tag(name="用户管理") public class UserController { //@ApiOperation(value = "获取员工信息",notes = "传入字段不能为空哦") @Operation(tags = "获取员工信息",summary = "传入字段不能为空哦") @PostMapping("/getMessage") public String getMessage(@RequestBody @Validated User user){ return "成功啦--名字:"+user.getName()+"年龄:"+user.getAge(); } }
package com.example.swaggerdemo; import org.springframework.http.ResponseEntity; import org.springframework.validation.FieldError; import org.springframework.web.bind.MethodArgumentNotValidException; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdvice; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @RestControllerAdvice public class GlobalExceptionHandler { /** * 处理POST请求参数校验异常 * @return */ @ExceptionHandler(MethodArgumentNotValidException.class) public ResponseEntity<Map<String,Object>> validExceptionHandler(MethodArgumentNotValidException e) { List<FieldError> fieldErrors = e.getBindingResult().getFieldErrors(); Map<String, Object> errorMap = fieldErrors.stream() .collect(Collectors.toMap(item -> item.getField(), item -> item.getDefaultMessage())); return ResponseEntity.badRequest().body(errorMap); } }
在浏览器访问http://localhost:9999/swagger-ui/

使用接口测试工具ApiPost发送请求


Gitee仓库:https://gitee.com/yangxumin/springbootswagger.git
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。