Spring Boot 中的 RestTemplate
在springboot中,有两种方式去配置:
- 自己new 新建一个RestTemplate实例作为bean 放到容器当中
- springboot 给我们提供了一个RestTemplateBuilder,通过RestTemplateBuilder.build()去获得一个RestTemplate
RestTemplate中的常用方法:
GET请求:
- getForObject() / getForEntity()
POST请求:
- postForObject() /postForEntity()
PUT请求:
- put()
DELETE请求:
- delete()
构造 URI
-
UriComponentsBuilder
构造 URI -
ServletUriComponentsBuilder
构造相对于当前请求的 URI -
MvcUriComponentsBuilder
构造指向 Controller 的 URI
常用构造方式:
URI uri = UriComponentsBuilder
.fromUriString("http://localhost:8080/hotels/{hotel}?q={q}")
.build("west", "123");
URI uri = UriComponentsBuilder
.fromUriString("http://localhost:8080/hotels/{hotel}") //基本的http头
.queryParam("q", "{q}") //增加一个传入变量
.encode() //默认编码
.buildAndExpand("west", "123") //传入一个数据
.toUri(); //构建url
UriComponents uriComponents = MvcUriComponentsBuilder
.fromMethodCall(on(BookingController.class).getBooking(21)).buildAndExpand(42);
URI uri = uriComponents.encode().toUri();
实例
@SpringBootApplication
@Slf4j
public class coffeetest implements ApplicationRunner {
@Autowired
private RestTemplate restTemplate;
public static void main(String[] args) {
new SpringApplicationBuilder()
.sources(coffeetest.class) //将这个类作为配置
.bannerMode(Banner.Mode.OFF) //关闭启动图案
.web(WebApplicationType.NONE) //关闭tomcat
.run(args);// 将命令行参数输入并启动
}
@Bean
public RestTemplate restTemplate(RestTemplateBuilder restTemplateBuilder){
//return new RestTemplate();
return restTemplateBuilder.build();
}
@Override
public void run(ApplicationArguments args) throws Exception {
URI build = UriComponentsBuilder
.fromUriString("http://localhost:8080/coffee/{id}")
.build(1);// 构建一个uri
ResponseEntity<Coffee> c = restTemplate.getForEntity(build, Coffee.class);// get请求操作
log.info("Response Status: {}, Response Headers: {}", c.getStatusCode(), c.getHeaders().toString());//获取状态响应码 获取
log.info("Coffee: {}", c.getBody());
String coffeeUri = "http://localhost:8080/coffee/";
Coffee request = Coffee.builder()
.name("Americano")
.price(BigDecimal.valueOf(25.00))
.build();
Coffee response = restTemplate.postForObject(coffeeUri, request, Coffee.class);//get请求
log.info("New Coffee: {}", response);
String s = restTemplate.getForObject(coffeeUri, String.class); //get请求操作
log.info("String: {}", s);
}
}
结果
分析
执行该程序之前,先启动https://editor.csdn.net/md/?articleId=103654374(了解 Spring MVC 的切入点)的代码。否则,报错。
我们可以看出通过getStatusCode()方法,取出了该条uri执行后的状态返回码,通过getHeaders()方法,返回了返回信息的格式(编码、时间等等),使用postForObject,进行post发送请求操作,使用getForObject进行get接收请求操作。
来源:CSDN
作者:L# S@
链接:https://blog.csdn.net/weixin_43790623/article/details/104007268