Springfox 可整合到Spring中自动生成JSON API文档。
1.添加Maveny依赖
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version> </dependency>
在SpringBoot的Application添加Bean
@SpringBootApplication @EnableSwagger2//添加Swagger注解 public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } @Bean public Docket petApi() { Docket docket = new Docket(DocumentationType.SWAGGER_2) .select() // .apis(RequestHandlerSelectors.any())//添加所有Controller // 添加指定包下的Controller文件 .apis(RequestHandlerSelectors.basePackage("com.example.demo.controller")) .paths(PathSelectors.any()) .build(); // Api的一些描述信息 ApiInfo apiInfo = new ApiInfoBuilder() .title("测试api") .description("对Api的描述") .contact(new Contact("wkk","https://blog.yayuanzi.com/author/knight","test@.com")) .version("v1.0") .build(); docket.apiInfo(apiInfo); return docket; }
打开浏览器访问http://localhost:8080/swagger-ui.html
看到下面界面就说明使用Springfox和Swagger-ui自动生成的Api文档可以了
home-controller 和user-controller 是配置中 com.example.demo.controller包下的两个controller
UserController.java
@Api( description = "关于账号的相关请求") @RestController @RequestMapping(value = "/user") public class UserController { @Autowired UserService userService; @ApiOperation(value = "注册",notes = "用于用户注册") @PostMapping(value = "/register") public Result register(User user) throws Exception { return userService.register(user); } @ApiOperation(value = "登录",notes = "用于用户登录") @PostMapping(value = "/login") public Result login(@ApiParam(value="用户名") String userName, @ApiParam(value="密码") String password) throws Exception { return userService.login(userName, password); } }
@Api()对类的解释
@ApiOperation()对请求方法的解释
@ApiParam() 对请求参数的解释
在Swagger-UI显示效果如下
Swagger-ui 除了查看外,还可以像postman测试接口,操作如下
这样虽然方便一些,但是不够安全,如何被人知道这个链接就可以随意测试接口了,
为了解决这个问题,可用使用Spring security
添加依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>
在SpringBoot 的配置文件application.yml 配置如下信息
security: basic: path: /swagger-ui.html,/v2/api-docs # 拦截的路径 user: name: wkk # 配置用户名 password: abc123 #密码
除了拦截/swagger-ui.html以外还要拦截/v2/api-docs因为v2/api-do路径下就是springfox生成的JSON 格式的api,通过swagger-ui渲染显示,所以这个才是真实的数据来源,一定要拦截这个。
配置之后再次访问http://localhost:8080/swagger-ui.html 就会发现需要输入上面配置的用户名和密码了才能访问
参考链接: springfox文档 , swagger_ui
转载时请注明出处及相应链接,本文永久地址:https://blog.yayuanzi.com/24317.html
微信打赏
支付宝打赏
感谢您对作者knight的打赏,我们会更加努力! 如果您想成为作者,请点我