1. 程式人生 > >Spring-Boot -- RESTFUL風格的API介面的三種呼叫方式【測試】

Spring-Boot -- RESTFUL風格的API介面的三種呼叫方式【測試】

專案目錄結構圖:


說明:博主所有基於學習的內容全部基於上圖中的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.