感觉RestTemplate用起来比较麻烦,于是自己简单封装了个工具类。
本人没啥技术含量,若有问题请见谅。
<dependency>
<groupId>com.squareup.okhttp3groupId>
<artifactId>okhttpartifactId>
<version>3.11.0version>
dependency>
通用返回类参考前文。
/**
* RestTemplet工具类
*/
public class RestTemplateUtil {
private static final RestTemplate REST_TEMPLATE
= new RestTemplate(new OkHttp3ClientHttpRequestFactory());
private RestTemplateUtil() {}
/**
* @Author CaoXiaoDong
* @Description 通用POST请求
* @Date 2020/6/8 下午1:05
* @param url 请求路径
* @param responseType 预期返回类型
* @return T
*/
public static <T> T post(String url,
Class<T> responseType) {
return commonRequest(url, HttpMethod.POST, HttpEntity.EMPTY, null, responseType);
}
/**
* @Author CaoXiaoDong
* @Description 通用POST请求
* @Date 2020/6/8 下午1:06
* @param url 请求路径
* @param requestParams 请求参数
* @param responseType 预期返回类型
* @return T
*/
public static <T> T post(String url,
Map<String, Object> requestParams,
Class<T> responseType) {
return commonRequest(url, HttpMethod.POST, HttpEntity.EMPTY, requestParams, responseType);
}
/**
* @Author CaoXiaoDong
* @Description 通用POST请求
* @Date 2020/6/8 下午1:06
* @param url 请求路径
* @param requestBody 请求体
* @param responseType 预期返回类型
* @return T
*/
public static <T, K> T post(String url,
K requestBody,
Class<T> responseType) {
return post(url, requestBody, null, responseType);
}
/**
* @Author CaoXiaoDong
* @Description 通用POST请求
* @Date 2020/6/8 下午1:06
* @param url 请求路径
* @param requestHeader 请求头
* @param responseType 预期返回类型
* @return T
*/
public static <T> T post(String url,
HttpHeaders requestHeader,
Class<T> responseType) {
return post(url, requestHeader, null, responseType);
}
/**
* @Author CaoXiaoDong
* @Description 通用POST请求
* @Date 2020/6/8 下午1:07
* @param url 请求路径
* @param requestEntity 请求实体
* @param responseType 预期返回类型
* @return T
*/
public static <T, K> T post(String url,
HttpEntity<K> requestEntity,
Class<T> responseType) {
return post(url, requestEntity, null, responseType);
}
/**
* @Author CaoXiaoDong
* @Description 通用POST请求
* @Date 2020/6/8 下午1:07
* @param url 请求路径
* @param requestBody 请求体
* @param requestParams 请求参数
* @param responseType 预期返回类型
* @return T
*/
public static <T, K> T post(String url,
K requestBody,
Map<String, Object> requestParams,
Class<T> responseType) {
return post(url, getHttpEntity(requestBody, null), requestParams, responseType);
}
/**
* @Author CaoXiaoDong
* @Description 通用POST请求
* @Date 2020/6/8 下午1:07
* @param url 请求路径
* @param requestHeader 请求头
* @param requestParams 请求参数
* @param responseType 预期返回类型
* @return T
*/
public static <T> T post(String url,
HttpHeaders requestHeader,
Map<String, Object> requestParams,
Class<T> responseType) {
return post(url, getHttpEntity(null, requestHeader), requestParams, responseType);
}
/**
* @Author CaoXiaoDong
* @Description 通用POST请求
* @Date 2020/6/8 下午1:07
* @param url 请求路径
* @param requestEntity 请求实体
* @param requestParams 请求参数
* @param responseType 预期返回类型
* @return T
*/
public static <T, K> T post(String url,
HttpEntity<K> requestEntity,
Map<String, Object> requestParams,
Class<T> responseType) {
return commonRequest(url, HttpMethod.POST, requestEntity, requestParams, responseType);
}
/**
* @Author CaoXiaoDong
* @Description 通用GET请求
* @Date 2020/6/8 下午1:07
* @param url 请求路径
* @param responseType 预期返回类型
* @return T
*/
public static <T> T get(String url,
Class<T> responseType) {
return commonRequest(url, HttpMethod.GET, HttpEntity.EMPTY, null, responseType);
}
/**
* @Author CaoXiaoDong
* @Description 通用GET请求
* @Date 2020/6/8 下午1:07
* @param url 请求路径
* @param requestParams 请求参数
* @param responseType 预期返回类型
* @return T
*/
public static <T> T get(String url,
Map<String, Object> requestParams,
Class<T> responseType) {
return commonRequest(url, HttpMethod.GET, HttpEntity.EMPTY, requestParams, responseType);
}
/**
* @Author CaoXiaoDong
* @Description 通用GET请求
* @Date 2020/6/8 下午1:08
* @param url 请求路径
* @param requestBody 请求体
* @param responseType 预期返回类型
* @return T
*/
public static <T, K> T get(String url,
K requestBody,
Class<T> responseType) {
return get(url, requestBody, null, responseType);
}
/**
* @Author CaoXiaoDong
* @Description 通用GET请求
* @Date 2020/6/8 下午1:08
* @param url 请求路径
* @param requestHeader 请求头
* @param responseType 预期返回类型
* @return T
*/
public static <T> T get(String url,
HttpHeaders requestHeader,
Class<T> responseType) {
return get(url, requestHeader, null, responseType);
}
/**
* @Author CaoXiaoDong
* @Description 通用GET请求
* @Date 2020/6/8 下午1:08
* @param url 请求路径
* @param requestEntity 请求实体
* @param responseType 预期返回类型
* @return T
*/
public static <T, K> T get(String url,
HttpEntity<K> requestEntity,
Class<T> responseType) {
return get(url, requestEntity, null, responseType);
}
/**
* @Author CaoXiaoDong
* @Description 通用GET请求
* @Date 2020/6/8 下午1:08
* @param url 请求路径
* @param requestBody 请求体
* @param requestParams 请求参数
* @param responseType 预期返回类型
* @return T
*/
public static <T, K> T get(String url,
K requestBody,
Map<String, Object> requestParams,
Class<T> responseType) {
return get(url, getHttpEntity(requestBody, null), requestParams, responseType);
}
/**
* @Author CaoXiaoDong
* @Description 通用GET请求
* @Date 2020/6/8 下午1:08
* @param url 请求路径
* @param requestHeader 请求头
* @param requestParams 请求参数
* @param responseType 预期返回类型
* @return T
*/
public static <T> T get(String url,
HttpHeaders requestHeader,
Map<String, Object> requestParams,
Class<T> responseType) {
return get(url, getHttpEntity(null, requestHeader), requestParams, responseType);
}
/**
* @Author CaoXiaoDong
* @Description 通用GET请求
* @Date 2020/6/8 下午1:08
* @param url 请求路径
* @param requestEntity 请求实体
* @param requestParams 请求参数
* @param responseType 预期返回类型
* @return T
*/
public static <T, K> T get(String url,
HttpEntity<K> requestEntity,
Map<String, Object> requestParams,
Class<T> responseType) {
return commonRequest(url, HttpMethod.GET, requestEntity, requestParams, responseType);
}
/**
* @Author CaoXiaoDong
* @Description 通用请求
* @Date 2020/6/8 下午1:08
* @param url 请求路径
* @param requestMethod 请求方法
* @param requestEntity 请求实体
* @param requestParams 请求参数
* @param responseType 预期返回类型
* @return T
*/
public static <T, K> T commonRequest(String url,
HttpMethod requestMethod,
HttpEntity<K> requestEntity,
Map<String, Object> requestParams,
Class<T> responseType) {
if (null != requestParams) {
return REST_TEMPLATE.exchange(
splicingUriValues(url, requestParams),
requestMethod, requestEntity,
responseType,
requestParams).getBody();
} else {
return REST_TEMPLATE.exchange(
url,
requestMethod,
requestEntity,
responseType).getBody();
}
}
/**
* 拼接url上的参数
*
* @param url 请求路径
* @param requestParams 请求参数
* @return String
*/
private static String splicingUriValues(String url, Map<String, Object> requestParams) {
StringBuilder sb = new StringBuilder();
sb.append(url).append("?");
requestParams.forEach((k, v) -> {
sb.append(k).append("={").append(k).append("}&");
});
return sb.deleteCharAt(sb.lastIndexOf("&")).toString();
}
/**
* 获得HttpEntity
*
* @param requestBody 请求体
* @param requestHeader 请求头
* @return HttpEntity
*/
private static <T> HttpEntity<T> getHttpEntity(T requestBody, HttpHeaders requestHeader) {
return new HttpEntity<T>(requestBody, requestHeader);
}
}