3.Restful API开发常用辅助框架(swagger,wireMock)

目前大部分开发方式是前后端分离的,前端和后端开始是并行进行的,我们需要与前端协同的工具

  • 使用swagger自动生成html文档
  • 使用wireMock快速伪造RESTful服务

3.1 swagger

swagger自动生成html文档 不用自己去维护api接口文档,减少服务维护接口工作量。

3.1.1 引入依赖

<!--springfox-swagger2 -->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.9.2</version>
</dependency>
<!--swagger-ui -->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.9.2</version>
</dependency>

3.1.2 启动类加注解

@EnableSwagger2

3.1.3 启动项目

启动项目,然后访问:http://127.0.0.1:8088/swagger-ui.html
44.png

我们发现:swagger文档列举出了所有的包含系统的所有的api文档

3.1.4 常用注解

@ApiOperation(value = "查询详情服务") //方法说明

@ApiModelProperty("密码") //方法对象参数的属性说明

@ApiParam("用户id")//方法单个参数说明

3.2 wireMock

3.2.1 wireMock本身就是一个服务器

  1. 光有文档和实际调用代码是不一样的,前端按照文档去写,然后实际调用服务可能相差比较大,在真正后端服务还没有开发完的情况下给前端提供伪造的Rest服务;需要使用wireMock,由于现在前端不关只有Html页面还有APP(安卓,苹果)手机端,如果每个人都伪造假数据,同样一份工作伪造了3遍,重复工作。
  2. 我们后端如果自己写一个SpringMVC项目,造一些假数据其实也是可以的,但是接口可能随时变化的,每次改代码还得重新部署。
  3. 所以我们需要搭建一个统一的服务。wireMock是一个独立的服务里,通过他的客户端你可以去写一些java代码,编辑服务器(wireMock)。服务器一直在那里 不用重启 不用在里面修改代码。从而前端就不用了去模拟数据了。前端就相连接真实服务器一样连接WireMock。

3.2.2 下载wireMock

进入官网:http://wiremock.org/
Docs-->Running as a Standalone Process--> downloaded the standalone JAR

下载一个jar包 大概有12M左右,并运行:
45.png

3.2.3 开发

引入依赖:

<!-- wiremock -->  
<dependency>  
 <groupId>com.github.tomakehurst</groupId>  
 <artifactId>wiremock</artifactId>  
</dependency>

我们在classpath/mock/response/下创建文件:01.txt 02.txt

开发WireMock客户端

public class MockServer {  
 /* 
 * 因为是一个启动类,所以需要具有main方法  
 * @param args  
 */  
  public static void main(String\[\] args) throws IOException{  
        WireMock.configureFor(8063); //1.告诉wiremock服务端在哪  
  WireMock.removeAllMappings();//移除之前所有的配置,把最新参数添加进去  
  
  mock("/order/1", "01");  
  mock("/order/2", "02");  
  }  
  
    private static void mock(String url, String file) throws IOException {  
        ClassPathResource resource = new ClassPathResource("mock/response/" \+ file + ".txt");  
  String content = StringUtils.join(FileUtils.readLines(resource.getFile(), "UTF-8").toArray(), "\\n");  
  WireMock.stubFor(WireMock.get(WireMock.urlPathEqualTo(url)).willReturn(WireMock.aResponse().withBody(content).withStatus(200)));  
  }  
}

然后前端:web、App即可访问。


startshineye
91 声望26 粉丝

我在规定的时间内,做到了我计划的事情;我自己也变得自信了,对于外界的人跟困难也更加从容了,我已经很强大了。可是如果我在规定时间内,我只有3分钟热度,哎,我不行,我就放弃了,那么这个就是我自己的问题,因为你自己...


引用和评论

0 条评论