• springboot整合swagger


    1、Swagger简介

            Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。
    官网: ( https://swagger.io/ )
    主要作用是:
            1. 使得前后端分离开发更加方便,有利于团队协作
            2. 接口的文档在线自动生成,降低后端开发人员编写接口文档的负担
            3. 功能测试
                    Spring已经将Swagger纳入自身的标准,建立了Spring-swagger项目,现在叫
                    Springfox。通过在项目中引入Springfox ,即可非常简单快捷的使用Swagger。

    2、整合步骤

     项目整体架构如下:

            2.1  首先构建一个maven项目,添加依赖,我本项目只是一个子模块,所以相应的版本都是依赖于父版本的,看不到版本号,swagger使用的是2.9.2版本

    1. <dependencies>
    2. <dependency>
    3. <groupId>io.springfox</groupId>
    4. <artifactId>springfox-swagger2</artifactId>
    5. </dependency>
    6. <dependency>
    7. <groupId>io.springfox</groupId>
    8. <artifactId>springfox-swagger-ui</artifactId>
    9. </dependency>
    10. <dependency>
    11. <groupId>org.springframework.boot</groupId>
    12. <artifactId>spring-boot-starter</artifactId>
    13. </dependency>
    14. <dependency>
    15. <groupId>org.springframework.boot</groupId>
    16. <artifactId>spring-boot-starter-web</artifactId>
    17. </dependency>
    18. <dependency>
    19. <groupId>org.springframework</groupId>
    20. <artifactId>spring-webmvc</artifactId>
    21. </dependency>
    22. </dependencies>

            2.2 创建Swagger配置类SwaggerConfig

    1. package com.swagger.config;
    2. import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
    3. import org.springframework.context.annotation.Bean;
    4. import org.springframework.context.annotation.Configuration;
    5. import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
    6. import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
    7. import springfox.documentation.builders.ApiInfoBuilder;
    8. import springfox.documentation.builders.PathSelectors;
    9. import springfox.documentation.builders.RequestHandlerSelectors;
    10. import springfox.documentation.service.ApiInfo;
    11. import springfox.documentation.service.Contact;
    12. import springfox.documentation.spi.DocumentationType;
    13. import springfox.documentation.spring.web.plugins.Docket;
    14. @Configuration
    15. @ConditionalOnProperty(prefix = "swagger",value = {"enable"},havingValue = "true")
    16. public class SwaggerConfig implements WebMvcConfigurer {
    17. @Bean
    18. public Docket buildDocket() {
    19. // 要扫描的API(Controller)基础包
    20. return new Docket(DocumentationType.SWAGGER_2)
    21. .apiInfo(buildApiInfo())
    22. .select()
    23. .apis(RequestHandlerSelectors.basePackage("com.swagger.controller"))
    24. .paths(PathSelectors.any())
    25. .build();
    26. }
    27. private ApiInfo buildApiInfo() {
    28. Contact contact = new Contact("开发者", "", "");
    29. return new ApiInfoBuilder()
    30. .title("测试‐应用API文档")
    31. .description("")
    32. .contact(contact)
    33. .version("1.0.0")
    34. .build();
    35. }
    36. /*** 添加静态资源文件,外部可以直接访问地址 ** @param registry */
    37. @Override
    38. public void addResourceHandlers(ResourceHandlerRegistry registry) {
    39. registry
    40. .addResourceHandler("/**")
    41. .addResourceLocations("classpath:/static/");
    42. registry
    43. .addResourceHandler("swagger‐ui.html")
    44. .addResourceLocations("classpath:/META‐INF/resources/");
    45. registry
    46. .addResourceHandler("/webjars/**")
    47. .addResourceLocations("classpath:/META‐INF/resources/webjars/");
    48. }
    49. }

                   2.3 在Controller层创建SwaggerController类方便测试,并添加swagger相应注解

    1. package com.swagger.controller;
    2. import io.swagger.annotations.Api;
    3. import io.swagger.annotations.ApiImplicitParam;
    4. import io.swagger.annotations.ApiOperation;
    5. import org.springframework.web.bind.annotation.GetMapping;
    6. import org.springframework.web.bind.annotation.RestController;
    7. @Api(value = "测试平台 ",tags = "测试平台")
    8. @RestController
    9. public class SwaggerController {
    10. @ApiOperation("测试")
    11. @GetMapping(path = "/hello")
    12. public String hello(){
    13. return "hello";
    14. }
    15. @ApiOperation("测试2")
    16. @ApiImplicitParam(name = "name",value = "姓名",required = true,dataType = "string")
    17. @GetMapping("/hi")
    18. public String hi(String name){
    19. return "hi : "+name;
    20. }
    21. }

    常用Swagger注解如下

    @Api:修饰整个类,描述Controller的作用 @ApiOperation:描述一个类的一个方法,或者说一个接口

    @ApiParam:单个参数的描述信息
    @ApiModel:用对象来接收参数
    @ApiModelProperty:用对象接收参数时,描述对象的一个字段
    @ApiResponse:HTTP响应其中1个描述
    @ApiResponses:HTTP响应整体描述
    @ApiIgnore:使用该注解忽略这个API
    @ApiError :发生错误返回的信息
    @ApiImplicitParam:一个请求参数
    @ApiImplicitParams:多个请求参数的描述信息

      2.4 创建启动类SwaggerApplication 

    1. package com.swagger;
    2. import org.springframework.boot.SpringApplication;
    3. import org.springframework.boot.autoconfigure.SpringBootApplication;
    4. import springfox.documentation.swagger2.annotations.EnableSwagger2;
    5. @SpringBootApplication
    6. @EnableSwagger2 //开启swagger
    7. public class SwaggerApplication {
    8. public static void main(String[] args) {
    9. SpringApplication.run(SwaggerApplication.class,args);
    10. }
    11. }

    2.5 启动SwaggerApplication ,访问http://localhost:8080/swagger-ui.html

     即可以查看接口文档了......

    路漫漫其修远兮,吾将上下而求索,希望此篇文章对大家有所帮助......

  • 相关阅读:
    域名系统与IP地址分配
    uniapp 地图行车轨迹
    实时频谱 TFN 手持式频谱分析仪 RMT716A 9KHz-6.3GHz 高性能全功能
    博客摘录「 自动微分----pytorch中的梯度运算与反向传播函数(预备知识)5」2024年4月18日
    车载以太网协议学习笔记
    bmp图片生成
    交通流预测——day58 T-GCN:一种用于流量预测的时态图卷积网络
    Mathematica强制将函数的自变量由符号转为数值
    【MATLAB的方程组求解】
    turtle绘图星黛露
  • 原文地址:https://blog.csdn.net/taibaishenlong/article/details/125560922