一、前情提要
上一篇文章我们介绍了开发环境是如何搭建的,并且将配置文件也写好了,这次我就来带大家搭建接口测试平台。上一篇文章链接:从零开始搭建SpringBoot项目(一)——开发环境搭建,有需要的可以去看看。
目录
- 一、前情提要
- 二、Swagger测试工具介绍
- 三、封装Web返回对象
- 四、Swagger搭建 Rest API
- 五、利用Swagger测试接口
二、Swagger测试工具介绍
开发前后端分离架构的项目,往往调试后端 Web 接口需要用到 POSTMAN 工具。虽然 POSTMAN 工具的功能非常强大,但是请求参数很多的情况下,我们手写这些参数和数据还是非常麻烦的。 因此我们需要一个调试后端 Web 接口更加简便的方法。恰好 Swagger 提供了 REST API 调用方式,我们不需要借助任何工具的情况下,访问 Swagger 页面,就可以对 Web 接口进行调用和调试,这种调试方式的效率要远超 POSTMAN 软件。
三、封装Web返回对象
程序员在开发过程中,必须能验证自己所写方法是否能正确输出和返回数据,所以接口测试平台则是一个后端项目中必不可少的。那我们是如何能在测试平台上精确简明的从一堆参数中找到我们需要的返回数据,如状态码,异常消息呢?这个方法我在前面的文章中已经铺垫了,那就是 封装Web返回对象 ,建议大家在搭建测试平台前先了解一下!
封装Web返回对象文章:Spring项目——封装Web返回对象
接下来我们接着上一篇文章结尾,来封装Web返回对象吧!
我们先添加依赖库,这次我们需要添加的是 Apache 的 httpcomponents 库
在pom.xml配置文件的< dependencies >< /dependencies >标签中添加以下依赖↓
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.4.13</version>
</dependency>
然后,在目录创建 com.example.csdn.util 包,创建 R 类↓
在 R 类中写下封装 Web 返回对象的方法↓
package com.example.csdn.util;
import org.apache.http.HttpStatus;
import java.util.HashMap;
import java.util.Map;
public class R extends HashMap<String,Object> {
public R(){
put("code", HttpStatus.SC_OK);
put("msg","success");
}
public R put(String key,Object value){
super.put(key,value);
return this;
}
public static R ok(){
return new R();
}
public static R ok(String msg){
R r=new R();
r.put("msg",msg);
return r;
}
public static R ok(Map<String,Object> map){
R r=new R();
r.putAll(map);
return r;
}
public static R error(int code,String msg){
R r=new R();
r.put("code",code);
r.put("msg",msg);
return r;
}
public static R error(String msg){
return error(HttpStatus.SC_INTERNAL_SERVER_ERROR,msg);
}
public static R error(){
return error(HttpStatus.SC_INTERNAL_SERVER_ERROR,"未知异常");
}
}
四、Swagger搭建 Rest API
老规矩在 pom.xml 文件中添加 Swagger 依赖库,这里我们使用的是 Swagger2 版本,在 UI 方面,比 Swagger1 版本要好看很多。
在pom.xml配置文件的< dependencies >< /dependencies >标签中添加以下依赖↓
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
然后,在目录创建 com.example.csdn.config 包,创建 SwaggerConfig 类↓
在 SwaggerConfig 类中写下方法↓
package com.example.csdn.swagger;
import io.swagger.annotations.ApiOperation;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.ApiKey;
import springfox.documentation.service.AuthorizationScope;
import springfox.documentation.service.SecurityReference;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spi.service.contexts.SecurityContext;
import springfox.documentation.spring.web.plugins.ApiSelectorBuilder;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.util.ArrayList;
import java.util.List;
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket createRestApi() {
Docket docket = new Docket(DocumentationType.SWAGGER_2);
ApiInfoBuilder builder = new ApiInfoBuilder();
builder.title("CSDN测试");
ApiInfo info = builder.build();
docket.apiInfo(info);
// ApiSelectorBuilder 用来设置哪些类中的方法会生成到REST API中
ApiSelectorBuilder selectorBuilder = docket.select();
selectorBuilder.paths(PathSelectors.any());//所有包下的类
//使用@ApiOperation的方法会被提取到REST API中
selectorBuilder.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class));
docket = selectorBuilder.build();
return docket;
}
}
五、利用Swagger测试接口
上面我们已经封装了web返回对象以及创建Swagger配置类,现在我们就用刚刚创建内容来检验一下我们的工作成不成功吧!
首先,在目录创建 com.example.csdn.controller 包,创建 TestController 类,用于测试接口↓
在 TestController 类中写下测试方法↓
package com.example.csdn.controller;
import com.example.csdn.util.R;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/test")
@Api("测试Web接口")
public class TestController {
@PostMapping("/sayHello")
@ApiOperation("最简单的测试方法")
public R sayHello() {
return R.ok().put("message", "HelloWorld!");
}
}
注意注意:@Api(“”) 注解会让 Swagger 扫描这个类里需要添加测试的方法,而 @ApiOperation (“”) 注解则是说明我这个方法需要测试!
如果我们想要将方法加到 Swagger 页面里测试,就必须在类前加 @Api(“”) ,还要在方法前加 @ApiOperation (“”) 这两个个注解才行!括号里写的是你这个方法的名字。
最后我们来检验一下吧!打开浏览器,访问 http://127.0.0.1:8080/Csdn-api/swagger-ui.html ↓
点击方法名展开测试页面,然后点击 Try it out
点击Excute 运行测试!
Code是http状态码,这里显示200即代表调用成功了,同时右边界面会调用我们TestController的方法!
大家快去试试吧!