zoukankan      html  css  js  c++  java
  • 前后端分离中,使用swagger2和WireMock提高开发速度

    一、使用swagger2生成接口文档

    1. 依赖

      <dependency>
          <groupId>io.springfox</groupId>
          <artifactId>springfox-swagger2</artifactId>
              <version>2.7.0</version>
      </dependency>
      <!-- swagger的bootstrap的美化界面 -->
      <dependency> 
        <groupId>io.springfox</groupId>
      <artifactId>springfox-swagger-ui</artifactId>
      <version>2.7.0</version>
      </dependency>
    2. 在springboot的启动类上加@EnableSwagger2注解
    3. 在controller的接口上加@ApiOperation(value = "用户查询服务")注解表明接口的作用。

    swagger2中常用注解:

    @Api():用在请求的类上,表示对类的说明,也代表了这个类是swagger2的资源

       参数:tags:说明该类的作用,参数是个数组,可以填多个。
          value="该参数没什么意义,在UI界面上不显示,所以不用配置"
          description = "用户基本信息操作"

    @ApiOperation():用于方法,表示一个http请求访问该方法的操作

    参数:value="方法的用途和作用"    
       notes="方法的注意事项和备注"    
       tags:说明该方法的作用,参数是个数组,可以填多个。
       格式:tags={"作用1","作用2"} 
       (在这里建议不使用这个参数,会使界面看上去有点乱,前两个常用)

    @ApiModel():用于响应实体类上,用于说明实体作用

    参数:description="描述实体的作用"  

    @ApiModelProperty:用在属性上,描述实体类的属性

    参数:value="用户名"  描述参数的意义
       name="name"    参数的变量名
       required=true     参数是否必选

    @ApiImplicitParams:用在请求的方法上,包含多@ApiImplicitParam

    @ApiImplicitParam:用于方法,表示单独的请求参数

    参数:name="参数ming" 
       value="参数说明"
       dataType="数据类型"
       paramType="query" 表示参数放在哪里
        · header 请求参数的获取:@RequestHeader
        · query   请求参数的获取:@RequestParam
        · path(用于restful接口) 请求参数的获取:@PathVariable
        · body(不常用)
        · form(不常用) 
    defaultValue="参数的默认值"
    required="true" 表示参数是否必须传

    @ApiParam():用于方法,参数,字段说明 表示对参数的要求和说明

    参数:name="参数名称"
       value="参数的简要说明"
       defaultValue="参数默认值"
       required="true" 表示属性是否必填,默认为false

    @ApiResponses:用于请求的方法上,根据响应码表示不同响应,一个@ApiResponses包含多个@ApiResponse

    @ApiResponse:用在请求的方法上,表示不同的响应

    参数:code="404"    表示响应码(int型),可自定义
       message="状态码对应的响应信息"   

    @ApiIgnore():用于类或者方法上,不被显示在页面上
    @Profile({"dev", "test"}):用于配置类上,表示只对开发和测试环境有用

    二、使用WireMock伪造REST服务

    WireMock 是一个灵活的库用于 Web 服务测试,和其他测试工具不同的是,WireMock 创建一个实际的 HTTP服务器来运行你的 Web 服务以方便测试。

    它支持 HTTP 响应存根、请求验证、代理/拦截、记录和回放, 并且可以在单元测试下使用或者部署到测试环境。

    使用场景:

    • 测试移动应用依赖于第三方REST APIs
    • 创建快速原型的APIs
    • 注入否则难于模拟第三方服务中的错误
    • 任何单元测试的代码依赖于web服务的
    1. 官网: http://wiremock.org/

      下载可执行jar:http://wiremock.org/docs/running-standalone/

    2. java-jar启动jar包   java -jar wiremock-standalone-2.18.0.jar --port 3298 
    3. 添加依赖
      <dependency>
            <groupId>com.github.tomakehurst</groupId>
            <artifactId>wiremock</artifactId>
            <version>1.53</version>
            <classifier>standalone</classifier>
      </dependency>
        <dependency>
              <groupId>org.testng</groupId>
              <artifactId>testng</artifactId>
              <version>6.8</version>
        </dependency>
    4. 在resources中建立文件夹建立txt文件,存放返回的json数据
    5. 添加设置
      public static void main(String[] args) throws IOException {
              WireMock.configureFor("127.0.0.1",3298);//设置路径和端口
              WireMock. removeAllMappings();//清空所有设置
      
              mock("/test/01", "01");
              mock("/test/02", "02");
          }
      
          private static void mock(String url, String file) throws IOException {
              ClassPathResource resource = new ClassPathResource("response/" + file + ".txt");
              String content = StringUtils.join(FileUtils.readLines(resource.getFile(), "UTF-8").toArray(), "
      ");//返回结果
              stubFor(get(urlPathEqualTo(url)).willReturn(aResponse().withBody(content).withStatus(200)));//get或post请求返回值
          }
  • 相关阅读:
    方法
    Go中的OOP
    GO 结构体
    指针
    闭包
    回调函数
    匿名函数
    函数的数据类型及本质
    defer语句
    递归函数
  • 原文地址:https://www.cnblogs.com/dinghaoran/p/11876525.html
Copyright © 2011-2022 走看看