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
我们发现:swagger文档列举出了所有的包含系统的所有的api文档
3.1.4 常用注解
@ApiOperation(value = "查询详情服务") //方法说明
@ApiModelProperty("密码") //方法对象参数的属性说明
@ApiParam("用户id")//方法单个参数说明
3.2 wireMock
3.2.1 wireMock本身就是一个服务器
- 光有文档和实际调用代码是不一样的,前端按照文档去写,然后实际调用服务可能相差比较大,在真正后端服务还没有开发完的情况下给前端提供伪造的Rest服务;需要使用wireMock,由于现在前端不关只有Html页面还有APP(安卓,苹果)手机端,如果每个人都伪造假数据,同样一份工作伪造了3遍,重复工作。
- 我们后端如果自己写一个SpringMVC项目,造一些假数据其实也是可以的,但是接口可能随时变化的,每次改代码还得重新部署。
- 所以我们需要搭建一个统一的服务。wireMock是一个独立的服务里,通过他的客户端你可以去写一些java代码,编辑服务器(wireMock)。服务器一直在那里 不用重启 不用在里面修改代码。从而前端就不用了去模拟数据了。前端就相连接真实服务器一样连接WireMock。
3.2.2 下载wireMock
进入官网:http://wiremock.org/
Docs-->Running as a Standalone Process--> downloaded the standalone JAR
下载一个jar包 大概有12M左右,并运行:
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即可访问。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。