前后端分离中,使用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(), "\n");//返回结果
            stubFor(get(urlPathEqualTo(url)).willReturn(aResponse().withBody(content).withStatus(200)));//get或post请求返回值
        }

猜你喜欢

转载自www.cnblogs.com/dinghaoran/p/11876525.html