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

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文档可以了

SpringBoot利用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显示效果如下

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

Swagger-ui 除了查看外,还可以像postman测试接口,操作如下

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

这样虽然方便一些,但是不够安全,如何被人知道这个链接就可以随意测试接口了,

为了解决这个问题,可用使用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 就会发现需要输入上面配置的用户名和密码了才能访问

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

参考链接: springfox文档 ,  swagger_ui

转载时请注明出处及相应链接,本文永久地址:https://blog.yayuanzi.com/24317.html

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

SpringBoot利用Springfox和Swagger-ui生成API文档 微信打赏

SpringBoot利用Springfox和Swagger-ui生成API文档 支付宝打赏

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

原文 

https://blog.yayuanzi.com/24317.html

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » SpringBoot利用Springfox和Swagger-ui生成API文档

分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址