最新消息:文章中包含代码时,请遵守代码高亮规范!

SpringBoot利用Springfox和Swagger-ui生成API文档

Java knight 803浏览 0评论

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


pay_weixin
pay_weixin
微信打赏
pay_weixin
支付宝打赏
感谢您对作者knight的打赏,我们会更加努力!    如果您想成为作者,请点我

您必须 登录 才能发表评论!