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.