• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

使用Swagger自动生成API文档~拿来即用

武飞扬头像
monkey_yuan19
帮助1

一、什么是Swagger

Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。

二、作用

  • 接口文档在线自动生成

  • 功能测试

三、Swagger使用的注解及其说明

  • @Api:用在类上面,说明当前类的作用

  • @ApiOperation:注解来给API增加方法说明。

  • @ApiImplicitParams:用来注解来给方法入参增加说明。

  • @ApiResponses:用于表示一组响应

  • @ApiResponse:用在@ApiResponses中,一般用于表达一个错误的响应信息

  • code:数字,例如400

  • message:信息,例如"请求参数没填好"

  • response:抛出异常的类

  • @ApiModel

  • @ApiModelProperty:描述一个model的属性


  • @ApiImplicitParam的参数说明

  • paramType:指定参数放在哪个地方

  • header:请求参数放置于Request Header,使用@RequestHeader获取

  • query:请求参数放置于请求地址,使用@RequestParam获取

  • path:(用于restful接口)-->请求参数的获取:@PathVariable

  • name:参数名

  • dataType:参数类型

  • required:参数是否必须传

  • value:说明参数的意思

  • defaultValue:参数的默认值

四、使用过程

  1. 引入依赖

  1.  
    <dependencies>
  2.  
    <dependency>
  3.  
    <groupId>io.springfox</groupId>
  4.  
    <artifactId>springfox-boot-starter</artifactId>
  5.  
    <version>3.0.0</version>
  6.  
    </dependency>
  7.  
    <dependency>
  8.  
    <groupId>org.projectlombok</groupId>
  9.  
    <artifactId>lombok</artifactId>
  10.  
    <version>1.18.24</version>
  11.  
    </dependency>
  12.  
    </dependencies>

2.创建Swagger配置类


  1.  
    import org.springframework.context.annotation.Bean;
  2.  
    import org.springframework.context.annotation.Configuration;
  3.  
    import org.springframework.util.StringUtils;
  4.  
    import springfox.documentation.builders.ApiInfoBuilder;
  5.  
    import springfox.documentation.builders.PathSelectors;
  6.  
    import springfox.documentation.builders.RequestHandlerSelectors;
  7.  
    import springfox.documentation.service.ApiInfo;
  8.  
    import springfox.documentation.service.Contact;
  9.  
    import springfox.documentation.spi.DocumentationType;
  10.  
    import springfox.documentation.spring.web.plugins.Docket;
  11.  
    import springfox.documentation.swagger2.annotations.EnableSwagger2;
  12.  
     
  13.  
    import java.util.ArrayList;
  14.  
     
  15.  
    /**
  16.  
    * Swagger配置类
  17.  
    * 在与spring boot集成时,放在与Application.java同级的目录下。
  18.  
    * 通过@Configuration注解,让Spring来加载该类配置。
  19.  
    * 再通过@EnableSwagger2注解来启用Swagger。
  20.  
    */
  21.  
     
  22.  
    @Configuration
  23.  
    @EnableSwagger2
  24.  
    public class Swagger {
  25.  
    /**
  26.  
    * 创建API应用
  27.  
    * apiInfo() 增加API相关信息
  28.  
    * 通过select()函数返回一个ApiSelectorBuilder实例,用来控制哪些接口暴露给Swagger来展现,
  29.  
    * 本例采用指定扫描的包路径来定义指定要建立API的目录。
  30.  
    *
  31.  
    * @return
  32.  
    */
  33.  
    @Bean
  34.  
    public Docket createRestApi() {
  35.  
    return new Docket(DocumentationType.SWAGGER_2)
  36.  
    .apiInfo(apiInfo())
  37.  
    .select()
  38.  
    .apis(RequestHandlerSelectors.basePackage("com.example.swgger"))
  39.  
    .paths(PathSelectors.any())
  40.  
    .build();
  41.  
    }
  42.  
     
  43.  
    /**
  44.  
    * 创建该API的基本信息(这些基本信息会展现在文档页面中)
  45.  
    * 访问地址:http://项目实际地址/swagger-ui.html
  46.  
    * @return
  47.  
    */
  48.  
    private ApiInfo apiInfo() {
  49.  
    return new ApiInfoBuilder()
  50.  
    .title("TY-Java-JY-2202(Spring Boot中使用Swagger构建RESTful APIs)")
  51.  
    .description("主要描述")
  52.  
    .termsOfServiceUrl("http://www.qfedu.com")
  53.  
    .contact(new Contact("Where are you come from","属于自己的网址哟","我自己的个人邮箱哈~~~"))
  54.  
    .version("1.0")
  55.  
    .build();
  56.  
    }
  57.  
    }
学新通

在项目启动之后,可以通过这个路径来访问API文档。http://项目实际地址/swagger-ui.html

例如:http://localhost:8080/swagger-ui/index.html 【如果你在Springboot的配置文件中没有修改端口号,可以直接通过这个链接来访问】

  1. 可能会出现的错误以及原因分析

SpringBoot更新至2.6.0,引发了这个bug。

学新通

在配置文件中添加这一栏就行

  1.  
    #application.propertise中这么写
  2.  
    spring.mvc.pathmatch.matching-strategy=ant_path_matcher

  1. 接口示例

注解参考第三点-------->>>>>>>>

  1.  
    import io.swagger.annotations.Api;
  2.  
    import io.swagger.annotations.ApiImplicitParam;
  3.  
    import io.swagger.annotations.ApiImplicitParams;
  4.  
    import io.swagger.annotations.ApiOperation;
  5.  
    import lombok.extern.slf4j.Slf4j;
  6.  
    import org.springframework.util.StringUtils;
  7.  
    import org.springframework.web.bind.annotation.*;
  8.  
    @Slf4j
  9.  
    @RestController
  10.  
    @RequestMapping("/nineteen")
  11.  
    @Api(tags = {"初次使用Swagger—CRM(客户关系管理系统—用户模块(旧版)"})
  12.  
    public class HelloController {
  13.  
     
  14.  
     
  15.  
    @RequestMapping("/updateUserPasswordByUid")
  16.  
    @ApiOperation(value="修改用户密码", notes="根据用户id修改密码")
  17.  
    @ApiImplicitParams({
  18.  
    @ApiImplicitParam(paramType="query", name = "userId",example = "2", value = "用户ID", required = true, dataType = "Integer",dataTypeClass = Integer.class),
  19.  
    @ApiImplicitParam(paramType="query", name = "password",example = "aDminN", value = "旧密码", required = true, dataType = "String",dataTypeClass = String.class),
  20.  
    @ApiImplicitParam(paramType="query", name = "newPassword",example = "aDminN", value = "新密码", required = false, dataType = "String",dataTypeClass = String.class)
  21.  
    })
  22.  
    public String updatePassword(@RequestParam(value="userId") Integer userId, @RequestParam(value="password") String password,
  23.  
    @RequestParam(value="newPassword",required = false) String newPassword){
  24.  
    if(userId <= 0 || userId > 2){
  25.  
    return "未知的用户";
  26.  
    }
  27.  
    if(StringUtils.isEmpty(password) || StringUtils.isEmpty(newPassword)){
  28.  
    return "密码不能为空";
  29.  
    }
  30.  
    if(password.equals(newPassword)){
  31.  
    return "新旧密码不能相同";
  32.  
    }
  33.  
    return "密码修改成功!";
  34.  
    }
  35.  
     
  36.  
     
  37.  
    }
学新通

今天的分享就到这里啦~~~~

下一期预告 knife4j的分享!!!!

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhhaeeke
系列文章
更多 icon
同类精品
更多 icon
继续加载