pring-Boot -- RESTFUL风格的API接口的三种调用方式【测试】
2017年12月22日 11:09:27
阅读数:4649
项目目录结构图:
说明:博主所有基于学习的内容全部基于上图中的Spring-Boot框架,项目暂时不会上传,因为还在完善,而且内容都比较离散,都是学习中遇到哪个知识点就往里面加,因此,我只拆分其中的某个知识点出来进行博文更新。
本篇,我将结合创建用户这个接口,利用三种调用方式进行不同的创建测试。
先来看一下,和用户操作有关的Controller
一、Swagger2+在线网页API工具测试
(1)POM 依赖
<!-- Swagger2+Api文档自动生成 -->
-
<!-- Swagger2核心包 --> -
<dependency> -
<groupId>io.springfox</groupId> -
<artifactId>springfox-swagger2</artifactId> -
<version>2.7.0</version> -
</dependency> -
<dependency> -
<groupId>io.springfox</groupId> -
<artifactId>springfox-swagger-ui</artifactId> -
<version>2.7.0</version> -
</dependency>
(2)包引入后,只需添加一个Swagger2的配置类就OK
A.
B.
SwaggerConfiguration.java
-
package com.appleyk.config; -
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.spi.DocumentationType; -
import springfox.documentation.spring.web.plugins.Docket; -
import springfox.documentation.swagger2.annotations.EnableSwagger2; -
/** -
* Created on 2017年12月22日11:03:43 -
* -
* @author Appleyk -
*/ -
@Configuration -
@EnableSwagger2 -
public class SwaggerConfiguration { -
@Bean -
public Docket createRestApi() { -
return new Docket(DocumentationType.SWAGGER_2) -
.apiInfo(apiInfo()) -
.select() -
.apis(RequestHandlerSelectors.basePackage("com.appleyk.controller")) -
.paths(PathSelectors.any()) -
.build(); -
} -
private ApiInfo apiInfo() { -
return new ApiInfoBuilder() -
.title("RESTFUL API DOC") -
.description("Spring-Boot--RESTFUL风格的接口文档在线自动生成") -
.termsOfServiceUrl("http://blog.csdn.net/appleyk") -
.version("1.0") -
.licenseUrl("http://localhost:8080/") -
.build(); -
} -
}
C.
(3)上述两步走完后,直接startup 项目
A.端口:8080
B.
默认API在线文档访问地址:http://localhost:8080/swagger-ui.html#/
C.
D.测试-- 用户创建
(1)测试前:
(2)测试准备:
JSON数据:
-
{ -
"age": 36, -
"sex": "男", -
"uID": 0, -
"uName": "詹姆斯", -
"uPwd": "123456", -
"uRole": 2 -
}
(3)发射数据
(4)数据验证
二、API专业测试工具 Insomnia
(1)
(2)
三、利用 HttpURLConnection连接API
放张图:
(1) 需要引入阿里的JOSN包
-
<dependency> -
<groupId>com.alibaba</groupId> -
<artifactId>fastjson</artifactId> -
<version>1.2.41</version> -
</dependency>
(2) 创建API测试单元
A.
B.
CreateUserByPost.java
-
package com.appleyk.HttpClient; -
import java.io.BufferedReader; -
import java.io.DataOutputStream; -
import java.io.IOException; -
import java.io.InputStreamReader; -
import java.io.UnsupportedEncodingException; -
import java.net.HttpURLConnection; -
import java.net.MalformedURLException; -
import java.net.URL; -
import org.junit.Test; -
import com.alibaba.fastjson.JSON; -
import com.alibaba.fastjson.JSONObject; -
import com.appleyk.pojo.User; -
import com.appleyk.utils.JsonUtils; -
public class CreateUserByPost { -
@Test -
public void PostUserCreator(){ -
//RESTFUL 风格的 API 接口 URL -
String POST_URL = "http://localhost:8080/rest/v1.0.1/database/user/create"; -
try { -
URL url = new URL(POST_URL); -
HttpURLConnection connection = (HttpURLConnection) url.openConnection(); -
connection.setDoOutput(true); -
connection.setDoInput(true); -
connection.setRequestMethod("POST"); -
connection.setUseCaches(false); -
connection.setInstanceFollowRedirects(true); -
connection.setRequestProperty("connection", "Keep-Alive"); -
// 发送的数据为:JOSN格式--->application/json -
connection.setRequestProperty("Content-Type", "application/json; charset=utf-8"); -
// 连接【】 -
connection.connect(); -
// 创建一个将数据写入到指定输出流的【数据输出流】--数据输出到connection的输出流中 -
DataOutputStream out = new DataOutputStream(connection.getOutputStream()); -
// 构建User数据 -
User user = new User(); -
//user.setuID(自增长,不用设置); -
user.setuName("韦德"); -
user.setSex("男"); -
user.setAge(36); -
user.setuPwd("wade"); -
user.setuRole(1); -
// 转一下--- Object -To- JOSN -
String msgSend = JsonUtils.objectToJson(user); -
//设置发送数据的json串的编码,防止中文乱码 -
out.write(msgSend.getBytes("utf-8")); -
//打印发送的数据 -
System.out.println(msgSend.toString()); -
// 清除输出流out的缓冲区 -
out.flush(); -
// 关闭输出流out -
out.close(); -
// 读取响应 --从内存中的缓冲区里面读 -
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); -
String lines; -
StringBuffer sb = new StringBuffer(""); -
while ((lines = reader.readLine()) != null) { -
lines = new String(lines.getBytes(), "utf-8"); -
sb.append(lines); -
} -
// 转一下 stringbuffer -- to -- JOSN对象 -
JSONObject object = JSON.parseObject(sb.toString()); -
// 拿到响应结果中的状态码 -
int status = object.getIntValue("status"); -
if(status == 200){ -
// 成功 return true -
System.out.println(sb); -
}else{ -
// 失败 return false -
System.out.println(sb); -
} -
// 关闭资源 -
reader.close(); -
// 断开连接 -
connection.disconnect(); -
} catch (MalformedURLException e) { -
e.printStackTrace(); -
} catch (UnsupportedEncodingException e) { -
e.printStackTrace(); -
} catch (IOException e) { -
e.printStackTrace(); -
} -
} -
}
C. 执行测试方法
D.