RestTemplate封装

记一个工作中常用的 RestTemplateUtils 

记录了

post请求Response泛型
post请求Response<List>泛型
post请求泛型
get 请求响应泛型对象

亲测可用,有需要的小伙伴自取哈

import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.TypeReference;
import com.ruoyi.common.core.domain.PageResult;
import com.ruoyi.common.core.domain.Response;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.web.client.RestTemplate;

import java.util.List;

/**
  * @author: chenxiao
  * @description: resttemplate封装
  * @date: Create in 2022/8/31 17:27
  * @modified By:
  */
public class RestTemplateUtils {

    private static final Logger LOGGER = LoggerFactory.getLogger(RestTemplateUtils.class);


    /**
     * Description: post请求Response泛型
     * <br />
     * CreateDate 2021-11-01 16:53:25
     *
     * @author chenxiao
     **/
    public static <T> Response<T> postForResponse(RestTemplate restTemplate, String url, Object request,
                                                  Class<T> cls, Object... urlVariables) {
        long startTime = System.currentTimeMillis();
        LOGGER.info("postForResponse url: {},request: {}", url,
                JSON.toJSONString(request));
        ResponseEntity<String> entity =
                restTemplate.exchange(url, HttpMethod.POST, new HttpEntity<>(request), String.class, urlVariables);
        Response<T> result = JSON.parseObject(entity.getBody(), new TypeReference<Response<T>>(cls) {
        }.getType());
        LOGGER.info("postForResponse url: {},response: {},cost: {} ms", url,
                JSON.toJSONString(result),
                System.currentTimeMillis() - startTime);
        return result;
    }

    /**
     * Description: post请求Response泛型
     * <br />
     * CreateDate 2021-11-01 16:53:25
     *
     * @author chenxiao
     **/
    public static Response postForResponse(RestTemplate restTemplate, String url, Object request,
                                           Object... urlVariables) {
        long startTime = System.currentTimeMillis();
        LOGGER.info("postForResponse url: {},request: {}", url,
                JSON.toJSONString(request));
        ResponseEntity<String> entity =
                restTemplate.exchange(url, HttpMethod.POST, new HttpEntity<>(request), String.class, urlVariables);
        Response result = JSON.parseObject(entity.getBody(), Response.class);
        LOGGER.info("postForResponse url: {},response: {},cost: {} ms", url,
                JSON.toJSONString(result),
                System.currentTimeMillis() - startTime);
        return result;
    }

    /**
     * Description: post请求Response<PageResult>泛型
     * <br />
     * CreateDate 2021-11-01 16:53:25
     *
     * @author chenxiao
     **/
    public static <T> Response<PageResult<T>> postForResponsePageResult(RestTemplate restTemplate, String url,
                                                                        Object request,
                                                                        Class<T> cls, Object... urlVariables) {
        long startTime = System.currentTimeMillis();
        LOGGER.info("postForResponsePageResult url: {},request: {}", url,
                JSON.toJSONString(request));
        ResponseEntity<String> entity =
                restTemplate.exchange(url, HttpMethod.POST, new HttpEntity<>(request), String.class, urlVariables);
        Response<PageResult<T>> result = JSON.parseObject(entity.getBody(),
                new TypeReference<Response<PageResult<T>>>(cls) {
                }.getType());
        LOGGER.info("postForResponsePageResult url: {},response: {},cost: {} ms", url,
                JSON.toJSONString(result),
                System.currentTimeMillis() - startTime);
        return result;
    }

    /**
     * Description: post请求Response<List>泛型
     * <br />
     * CreateDate 2021-11-01 16:53:25
     *
     * @author chenxiao
     **/
    public static <T> Response<List<T>> postForResponseList(RestTemplate restTemplate, String url, Object request,
                                                            Class<T> cls, Object... urlVariables) {
        long startTime = System.currentTimeMillis();
        LOGGER.info("postForResponseList url: {},request: {}", url,
                JSON.toJSONString(request));
        ResponseEntity<String> entity =
                restTemplate.exchange(url, HttpMethod.POST, new HttpEntity<>(request), String.class, urlVariables);
        Response<List<T>> result = JSON.parseObject(entity.getBody(), new TypeReference<Response<List<T>>>(cls) {
        }.getType());
        LOGGER.info("postForResponseList url: {},response: {},cost: {} ms", url,
                JSON.toJSONString(result),
                System.currentTimeMillis() - startTime);
        return result;
    }

    /**
     * Description: post请求泛型
     * <br />
     * CreateDate 2021-11-01 16:53:25
     *
     * @author chenxiao
     **/
    public static <T> T postForObject(RestTemplate restTemplate, String url, Object request,
                                      Class<T> cls, Object... urlVariables) {
        long startTime = System.currentTimeMillis();
        LOGGER.info("postForObject url: {},request: {}", url,
                JSON.toJSONString(request));
        ResponseEntity<String> entity =
                restTemplate.exchange(url, HttpMethod.POST, new HttpEntity<>(request), String.class, urlVariables);
        LOGGER.info("postForObject url: {},response: {},cost: {} ms", url,
                JSON.toJSONString(entity.getBody()),
                System.currentTimeMillis() - startTime);
        return JSON.parseObject(entity.getBody(), cls);
    }

    /**
     * Description: post请求泛型
     * <br />
     * CreateDate 2021-11-01 16:53:25
     *
     * @author chenxiao
     **/
    public static <T> T postForObject(RestTemplate restTemplate, String url, HttpEntity<?> requestEntity,
                                      Class<T> cls, Object... urlVariables) {
        long startTime = System.currentTimeMillis();
        LOGGER.info("postForObject url: {},request: {}", url,
                JSON.toJSONString(requestEntity));
        ResponseEntity<String> entity =
                restTemplate.exchange(url, HttpMethod.POST, requestEntity, String.class, urlVariables);
        T result = JSON.parseObject(entity.getBody(), cls);
        LOGGER.info("postForObject url: {},response: {},cost: {} ms", url,
                JSON.toJSONString(result),
                System.currentTimeMillis() - startTime);
        return result;
    }

    /**
     * Description: get 请求响应泛型对象
     * <br />
     * CreateDate 2022-05-13 18:41:15
     *
     * @author chenxiao
     **/
    public static <T> T getForObject(RestTemplate restTemplate, String url, Class<T> cls) {
        long startTime = System.currentTimeMillis();
        LOGGER.info("getForObject url: {}", url);
        ResponseEntity<String> entity = restTemplate.getForEntity(url, String.class);
        T result = JSON.parseObject(entity.getBody(), cls);
        LOGGER.info("getForObject url: {},response: {},cost: {} ms", url,
                JSON.toJSONString(result),
                System.currentTimeMillis() - startTime);
        return result;
    }

    /**
     * Description: post请求Response泛型
     * <br />
     * CreateDate 2021-11-01 16:53:25
     *
     * @author chenxiao
     **/
    public static <T> Response<T> getForResponse(RestTemplate restTemplate, String url, Class<T> cls) {
        long startTime = System.currentTimeMillis();
        LOGGER.info("getForResponse url: {}", url);
        ResponseEntity<String> entity = restTemplate.getForEntity(url, String.class);
        Response<T> result = JSON.parseObject(entity.getBody(), new TypeReference<Response<T>>(cls) {
        }.getType());
        LOGGER.info("getForResponse url: {},response: {},cost: {} ms", url,
                JSON.toJSONString(result),
                System.currentTimeMillis() - startTime);
        return result;
    }
}


版权声明:本文为chenXiaosCode原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。