一、使用swagger2生成接口文档
依赖
<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>- 在springboot的启动类上加@EnableSwagger2注解
- 在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服务的
官网: http://wiremock.org/
下载可执行jar:http://wiremock.org/docs/running-standalone/
- java-jar启动jar包 java -jar wiremock-standalone-2.18.0.jar --port 3298
- 添加依赖
<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>
- 在resources中建立文件夹建立txt文件,存放返回的json数据
- 添加设置
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请求返回值 }