Spring-Boot -- RESTFUL风格的API接口的三种调用方式【测试】

时间:2024-03-26 18:12:12

pring-Boot -- RESTFUL风格的API接口的三种调用方式【测试】

2017年12月22日 11:09:27

阅读数:4649

 

项目目录结构图:

 

Spring-Boot -- RESTFUL风格的API接口的三种调用方式【测试】

 

说明:博主所有基于学习的内容全部基于上图中的Spring-Boot框架,项目暂时不会上传,因为还在完善,而且内容都比较离散,都是学习中遇到哪个知识点就往里面加,因此,我只拆分其中的某个知识点出来进行博文更新。

 

本篇,我将结合创建用户这个接口,利用三种调用方式进行不同的创建测试。

 

先来看一下,和用户操作有关的Controller

 

Spring-Boot -- RESTFUL风格的API接口的三种调用方式【测试】

 

 

一、Swagger2+在线网页API工具测试

 

(1)POM 依赖

 

<!-- Swagger2+Api文档自动生成 -->

 

 
  1. <!-- Swagger2核心包 -->

  2. <dependency>

  3. <groupId>io.springfox</groupId>

  4. <artifactId>springfox-swagger2</artifactId>

  5. <version>2.7.0</version>

  6. </dependency>

  7. <dependency>

  8. <groupId>io.springfox</groupId>

  9. <artifactId>springfox-swagger-ui</artifactId>

  10. <version>2.7.0</version>

  11. </dependency>

 

 

 

(2)包引入后,只需添加一个Swagger2的配置类就OK

 

A.

 

Spring-Boot -- RESTFUL风格的API接口的三种调用方式【测试】

 

B.

 

SwaggerConfiguration.java 

 

 
  1. package com.appleyk.config;

  2.  
  3. import org.springframework.context.annotation.Bean;

  4. import org.springframework.context.annotation.Configuration;

  5.  
  6. import springfox.documentation.builders.ApiInfoBuilder;

  7. import springfox.documentation.builders.PathSelectors;

  8. import springfox.documentation.builders.RequestHandlerSelectors;

  9. import springfox.documentation.service.ApiInfo;

  10. import springfox.documentation.spi.DocumentationType;

  11. import springfox.documentation.spring.web.plugins.Docket;

  12. import springfox.documentation.swagger2.annotations.EnableSwagger2;

  13.  
  14. /**

  15. * Created on 2017年12月22日11:03:43

  16. *

  17. * @author Appleyk

  18. */

  19. @Configuration

  20. @EnableSwagger2

  21. public class SwaggerConfiguration {

  22.  
  23. @Bean

  24. public Docket createRestApi() {

  25. return new Docket(DocumentationType.SWAGGER_2)

  26. .apiInfo(apiInfo())

  27. .select()

  28. .apis(RequestHandlerSelectors.basePackage("com.appleyk.controller"))

  29. .paths(PathSelectors.any())

  30. .build();

  31. }

  32.  
  33. private ApiInfo apiInfo() {

  34. return new ApiInfoBuilder()

  35. .title("RESTFUL API DOC")

  36. .description("Spring-Boot--RESTFUL风格的接口文档在线自动生成")

  37. .termsOfServiceUrl("http://blog.csdn.net/appleyk")

  38. .version("1.0")

  39. .licenseUrl("http://localhost:8080/")

  40. .build();

  41. }

  42. }

 

 

C.

 

Spring-Boot -- RESTFUL风格的API接口的三种调用方式【测试】

 

(3)上述两步走完后,直接startup 项目

 

A.端口:8080

 

Spring-Boot -- RESTFUL风格的API接口的三种调用方式【测试】

 

B.

 

默认API在线文档访问地址:http://localhost:8080/swagger-ui.html#/

 

Spring-Boot -- RESTFUL风格的API接口的三种调用方式【测试】

 

C.

 

Spring-Boot -- RESTFUL风格的API接口的三种调用方式【测试】

 

D.测试--  用户创建

 

(1)测试前:

 

Spring-Boot -- RESTFUL风格的API接口的三种调用方式【测试】

 

 

(2)测试准备:

 

JSON数据:

 

 

 
  1. {

  2. "age": 36,

  3. "sex": "男",

  4. "uID": 0,

  5. "uName": "詹姆斯",

  6. "uPwd": "123456",

  7. "uRole": 2

  8. }

 

 

Spring-Boot -- RESTFUL风格的API接口的三种调用方式【测试】

 

(3)发射数据

 

Spring-Boot -- RESTFUL风格的API接口的三种调用方式【测试】

 

(4)数据验证

 

Spring-Boot -- RESTFUL风格的API接口的三种调用方式【测试】

 

二、API专业测试工具 Insomnia 

 

(1)

 

Spring-Boot -- RESTFUL风格的API接口的三种调用方式【测试】

 

 

(2)

 

Spring-Boot -- RESTFUL风格的API接口的三种调用方式【测试】

 

三、利用 HttpURLConnection连接API

 

放张图:

 

Spring-Boot -- RESTFUL风格的API接口的三种调用方式【测试】

 

 

 

(1) 需要引入阿里的JOSN包

 

 

 
  1. <dependency>

  2. <groupId>com.alibaba</groupId>

  3. <artifactId>fastjson</artifactId>

  4. <version>1.2.41</version>

  5. </dependency>


(2) 创建API测试单元

 

 

A.

 

Spring-Boot -- RESTFUL风格的API接口的三种调用方式【测试】
 

 

B.

CreateUserByPost.java

 

 

 
  1. package com.appleyk.HttpClient;

  2.  
  3. import java.io.BufferedReader;

  4. import java.io.DataOutputStream;

  5. import java.io.IOException;

  6. import java.io.InputStreamReader;

  7. import java.io.UnsupportedEncodingException;

  8. import java.net.HttpURLConnection;

  9. import java.net.MalformedURLException;

  10. import java.net.URL;

  11.  
  12. import org.junit.Test;

  13.  
  14. import com.alibaba.fastjson.JSON;

  15. import com.alibaba.fastjson.JSONObject;

  16. import com.appleyk.pojo.User;

  17. import com.appleyk.utils.JsonUtils;

  18.  
  19. public class CreateUserByPost {

  20.  
  21. @Test

  22. public void PostUserCreator(){

  23.  
  24. //RESTFUL 风格的 API 接口 URL

  25. String POST_URL = "http://localhost:8080/rest/v1.0.1/database/user/create";

  26.  
  27. try {

  28. URL url = new URL(POST_URL);

  29.  
  30. HttpURLConnection connection = (HttpURLConnection) url.openConnection();

  31. connection.setDoOutput(true);

  32. connection.setDoInput(true);

  33. connection.setRequestMethod("POST");

  34. connection.setUseCaches(false);

  35. connection.setInstanceFollowRedirects(true);

  36. connection.setRequestProperty("connection", "Keep-Alive");

  37. // 发送的数据为:JOSN格式--->application/json

  38. connection.setRequestProperty("Content-Type", "application/json; charset=utf-8");

  39. // 连接【】

  40. connection.connect();

  41.  
  42. // 创建一个将数据写入到指定输出流的【数据输出流】--数据输出到connection的输出流中

  43. DataOutputStream out = new DataOutputStream(connection.getOutputStream());

  44.  
  45. // 构建User数据

  46. User user = new User();

  47. //user.setuID(自增长,不用设置);

  48. user.setuName("韦德");

  49. user.setSex("男");

  50. user.setAge(36);

  51. user.setuPwd("wade");

  52. user.setuRole(1);

  53.  
  54. // 转一下--- Object -To- JOSN

  55. String msgSend = JsonUtils.objectToJson(user);

  56.  
  57. //设置发送数据的json串的编码,防止中文乱码

  58. out.write(msgSend.getBytes("utf-8"));

  59.  
  60. //打印发送的数据

  61. System.out.println(msgSend.toString());

  62.  
  63. // 清除输出流out的缓冲区

  64. out.flush();

  65.  
  66. // 关闭输出流out

  67. out.close();

  68.  
  69. // 读取响应 --从内存中的缓冲区里面读

  70. BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));

  71. String lines;

  72. StringBuffer sb = new StringBuffer("");

  73. while ((lines = reader.readLine()) != null) {

  74. lines = new String(lines.getBytes(), "utf-8");

  75. sb.append(lines);

  76. }

  77.  
  78. // 转一下 stringbuffer -- to -- JOSN对象

  79. JSONObject object = JSON.parseObject(sb.toString());

  80.  
  81. // 拿到响应结果中的状态码

  82. int status = object.getIntValue("status");

  83. if(status == 200){

  84. // 成功 return true

  85. System.out.println(sb);

  86.  
  87. }else{

  88. // 失败 return false

  89. System.out.println(sb);

  90. }

  91.  
  92. // 关闭资源

  93. reader.close();

  94. // 断开连接

  95. connection.disconnect();

  96.  
  97. } catch (MalformedURLException e) {

  98. e.printStackTrace();

  99. } catch (UnsupportedEncodingException e) {

  100. e.printStackTrace();

  101. } catch (IOException e) {

  102. e.printStackTrace();

  103. }

  104.  
  105.  
  106. }

  107. }

 

C. 执行测试方法

 

Spring-Boot -- RESTFUL风格的API接口的三种调用方式【测试】

 

D.

 

Spring-Boot -- RESTFUL风格的API接口的三种调用方式【测试】