当前位置:网站首页>RestTemplate工具类
RestTemplate工具类
2022-08-11 07:51:00 【杨小熊的笔记】
RestTemplate工具类
RestTemplateUtils工具类代码:
package com.example.demo.utils;
import com.example.demo.entity.common.ResultVo;
import org.springframework.core.ParameterizedTypeReference;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
@Component
public class RestTemplateUtils {
@Resource
private RestTemplate restTemplate;
public <T> ResultVo<T> get(String url, ObjectParameterizedTypeReference<T> responseType) {
return http(url, HttpMethod.GET, null, responseType);
}
public <T> ResultVo<T> post(String url, Object request, ObjectParameterizedTypeReference<T> responseType) {
return http(url, HttpMethod.POST, request, responseType);
}
public <T> ResultVo<T> http(String url, HttpMethod httpMethod, Object request, ObjectParameterizedTypeReference<T> responseType) {
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<Object> requestData = new HttpEntity<>(request, httpHeaders);
return restTemplate.exchange(url, httpMethod, requestData, responseType).getBody();
}
public static class ObjectParameterizedTypeReference <T> extends ParameterizedTypeReference<ResultVo<T>> {
}
}
验证:
package com.example.demo.controller;
import com.example.demo.entity.Book;
import com.example.demo.entity.EmployeeVo;
import com.example.demo.entity.common.ResultVo;
import com.example.demo.exception.DemoException;
import com.example.demo.service.IHelloService;
import com.example.demo.utils.RestTemplateUtils;
import com.example.demo.utils.ResultVoUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@RestController
@Api("Hello 测试接口")
@RequestMapping(value = "hello", produces = MediaType.APPLICATION_JSON_VALUE)
public class HelloController {
private static final Logger LOGGER = LoggerFactory.getLogger(HelloController.class);
@Resource
private RestTemplateUtils restTemplateUtils;
@GetMapping(value = "/request-get")
public ResultVo<Void> requestGet() {
String url = "http://localhost:8888/employee/query/2";
ResultVo<EmployeeVo> resultVo = restTemplateUtils.get(url,
new RestTemplateUtils.ObjectParameterizedTypeReference<>());
LOGGER.info("code: {}", resultVo.getCode());
return ResultVoUtils.success(null);
}
@GetMapping(value = "/request-post")
public ResultVo<Void> requestPost() {
Book book = new Book();
book.setAuthor("吴军");
book.setPublisher("人民邮电出版社");
book.setName("数学之美");
String url = "http://localhost:8888/v1/book/one-book";
ResultVo<Book> resultVo = restTemplateUtils.post(url,
book,
new RestTemplateUtils.ObjectParameterizedTypeReference<>());
LOGGER.info("code: {}", resultVo.getCode());
return ResultVoUtils.success(null);
}
}
ResultVo请参考: 6. 返回统一的Json格式
SpringBoot 学习笔记
Demo 源代码 GitHub地址
1. HelloWorld
2. logback 日志配置
3. 返回 Json 串
4. Tomcat 部署
5. Swagger-ui
6. 返回统一的Json格式
7. 处理全局异常
8. GsonUtils 工具类
9. 多环境部署
10. 集成数据库
11. RestTemplate工具类
边栏推荐
猜你喜欢
1101 B是A的多少倍 (15 分)
租房小程序
Analysys and the Alliance of Small and Medium Banks jointly released the Hainan Digital Economy Index, so stay tuned!
tf.cast(), reduce_min(), reduce_max()
装饰器模式:Swift 实现
matrix multiplication in tf
TF中使用softmax函数;
1051 Multiplication of Complex Numbers (15 points)
tf.cast(),reduce_min(),reduce_max()
机器学习(一)数据的预处理
随机推荐
1003 我要通过 (20 分)
少年成就黑客,需要这些技能
1076 Wifi Password (15 points)
cdc连sqlserver异常对象可能有无法序列化的字段 有没有大佬看得懂的 帮忙解答一下
opengauss创建用户权限问题
迷你图书馆系统(对象+数组)
4.1-支持向量机
2021-08-11 For loop combined with multi-threaded asynchronous query and collect results
go sqlx 包
TF中的条件语句;where()
Do you know the basic process and use case design method of interface testing?
1051 Multiplication of Complex Numbers (15 points)
链式编程注解
My creative anniversary丨Thank you for being with you for these 365 days, not forgetting the original intention, and each is wonderful
tf.cast(),reduce_min(),reduce_max()
关于Excel实现分组求和最全文档
1106 2019 Sequence (15 points)
1002 Write the number (20 points)
CSDN21天学习挑战赛——封装(06)
进阶-指针