Spring-Boot -- RESTFUL風格的API介面的三種呼叫方式【測試】
阿新 • • 發佈:2018-12-30
專案目錄結構圖:
說明:博主所有基於學習的內容全部基於上圖中的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.