项目目录结构图:
说明:博主所有基于学习的内容全部基于上图中的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.