目录
查看
spring官网,Spring Framework,LEARN下,Reference Doc.文档,点击Integration
创建
在Eurake下创建一个spring Initilaizr,添加Spring Web、Lombok依赖
在test文件夹下,启动类中进行测试,首先导入RestTemplate,在org.springframework.web.client下,实例化一个RestTemplate类,先调用getObject()方法,所需参数为url地址,返回类型。
package com.dcits.resttemplate;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.web.client.RestTemplate;
@SpringBootTest
class RestTemplateApplicationTests {
@Test
void contextLoads() {
//在java代码中发送一个请求,请求一个页面
RestTemplate restTemplate=new RestTemplate();
String url = "https://www.baidu.com";
String result=restTemplate.getForObject(url,String.class);
System.out.println(result);
}
}
若访问页面,运行后发现返回了HTML代码
测试调用接口
对get请求测试
对getForObject方法进行测试
创建一个Controller
package com.dcits.resttemplate.controller;
import com.dcits.resttemplate.pojo.User;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestController {
@GetMapping("testGet")
public String testGet(String name){
System.out.println(name);
return "OK";
}
/*
* post传参 两种
* json参数的核心,header content-type = application/json;charset=UTF-8
*
* @return
* */
@PostMapping("testPost1")
public String testPost1(@RequestBody User user){
System.out.println(user);
return "OK";
}
/*
* 接收表单参数
* <form action=/testPost2
* <input name=ccc value=ssss
* header content-type = application/x-www-form-urlencoded
* @param user
* @return
* */
@PostMapping("testPost2")
public String testPost2(User user){
System.out.println(user);
return "OK";
}
}
创建一个User类
package com.dcits.resttemplate.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private String name;
private Integer age;
private Double price;
}
在test的启动类中写测试方法
@Test
void testGet(){
RestTemplate restTemplate=new RestTemplate();
String url="http://localhost:8080/testGet?name=Css";
String result=restTemplate.getForObject(url,String.class);
System.out.println(result);
}
首先进行get方式测试,先将项目启动类启动(注意不是Test的启动类),接着启动testGet方法
测试成功
对getForEntity方法进行测试:
测试代码:
@Test
void testGet(){
RestTemplate restTemplate=new RestTemplate();
String url="http://localhost:8080/testGet?name=Css";
ResponseEntity<String> responseEntity=restTemplate.getForEntity(url,String.class);
//http://协议(规范,接头暗号)
//请求头 请求参数...响应头 响应状态码 报文...
System.out.println(responseEntity);
}
状态码:200,body内容:ok,之后是响应具体信息
对post请求测试
对postForObject测试
JSON形式的post
测试代码:
@Test
void testPost1(){
RestTemplate restTemplate = new RestTemplate();
String url = "http://localhost:8080/testPost1";
User user = new User("杰哥",21,5000D);
//发送post,而且是json参数,因为web里面默认用json
String result = restTemplate.postForObject(url,user,String.class);
System.out.println(result);
}
表单形式的post
测试代码:
@Test
void testPost2(){
RestTemplate restTemplate = new RestTemplate();
String url = "http://localhost:8080/testPost2";
//构建表单参数,注意这里属性要和pojo里的属性对应上
LinkedMultiValueMap<String,Object> map = new LinkedMultiValueMap<>();
map.add("name","唐三");
map.add("age",26);
map.add("price",2000D);
String result = restTemplate.postForObject(url,map,String.class);
System.out.println(result);
}