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的打赏,我们会更加努力! 如果您想成为作者,请点我