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.




  • 6
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Spring Boot中,可以使用RestTemplate或FeignClient来调用内部的RESTful API。以下是两方法的示例。 使用RestTemplate 首先需要在Spring Boot项目中引入RestTemplate依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> ``` 然后在代码中使用RestTemplate来调用内部的RESTful API: ```java @RestController public class MyController { @Autowired private RestTemplate restTemplate; @GetMapping("/myapi") public String myApi() { String result = restTemplate.getForObject("http://localhost:8080/internal-api", String.class); return result; } } ``` 在这个例子中,RestTemplate被注入到了控制器中,并且使用getForObject方法来调用内部的RESTful API。 使用FeignClient FeignClient是一个声明式的HTTP客户端,它可以轻松地定义和调用RESTful API。首先需要在Spring Boot项目中引入FeignClient依赖: ```xml <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> ``` 然后在代码中声明一个FeignClient接口: ```java @FeignClient(name = "my-service", url = "http://localhost:8080") public interface MyApiClient { @GetMapping("/internal-api") String getInternalApi(); } ``` 在这个例子中,@FeignClient注解指定了待调用的服务名和服务地址,并且定义了一个getInternalApi方法来调用内部的RESTful API。 最后在控制器中注入MyApiClient接口调用getInternalApi方法即可: ```java @RestController public class MyController { @Autowired private MyApiClient myApiClient; @GetMapping("/myapi") public String myApi() { String result = myApiClient.getInternalApi(); return result; } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值