zoukankan      html  css  js  c++  java
  • RestTemplate 封装

    import com.alibaba.fastjson.JSON;
    import lombok.extern.slf4j.Slf4j;
    import org.apache.commons.collections4.CollectionUtils;
    import org.apache.commons.collections4.MapUtils;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Qualifier;
    import org.springframework.http.*;
    import org.springframework.stereotype.Component;
    import org.springframework.web.client.RestTemplate;
    
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    @Slf4j
    @Component
    public class RestTemplateExchange {
    
    	@Autowired
    	@Qualifier("baseRestTemplate")
    	private RestTemplate baseRestTemplate;
    
    	public String sendGetForBody(String url, Map<String, String> headersMap) {
    		return parseResponseEntityForBody(sendParamsMapForResponseEntity(url, HttpMethod.GET, headersMap, null));
    	}
    
    	public String sendGetParamsMapForBody(String url, Map<String, String> headersMap, Map<String, Object> paramsMap) {
    		return parseResponseEntityForBody(sendParamsMapForResponseEntity(url, HttpMethod.GET, headersMap, paramsMap));
    	}
    
    	public String sendPostParamsMapJsonForBody(String url, Map<String, String> headersMap,
    			Map<String, Object> paramsMap) {
    		return sendParamsMapJsonForBody(url, HttpMethod.POST, headersMap, paramsMap);
    	}
    
    	public String sendPutParamsMapJsonForBody(String url, Map<String, String> headersMap,
    			Map<String, Object> paramsMap) {
    		return sendParamsMapJsonForBody(url, HttpMethod.PUT, headersMap, paramsMap);
    	}
    
    	public String sendDeleteParamsMapJsonForBody(String url, Map<String, String> headersMap,
    			Map<String, Object> paramsMap) {
    		return sendParamsMapJsonForBody(url, HttpMethod.DELETE, headersMap, paramsMap);
    	}
    
    	public String sendParamsMapJsonForBody(String url, HttpMethod httpMethod, Map<String, String> headersMap,
    			Map<String, Object> paramsMap) {
    		if (MapUtils.isNotEmpty(headersMap)) {
    			headersMap.put(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE);
    		}
    		return parseResponseEntityForBody(sendParamsMapForResponseEntity(url, httpMethod, headersMap, paramsMap));
    	}
    
    	public String sendGetParamsListForBody(String url, Map<String, String> headersMap, List<?> paramsList) {
    		return parseResponseEntityForBody(sendParamsListForResponseEntity(url, HttpMethod.GET, headersMap, paramsList));
    	}
    
    	public String sendPostParamsListJsonForBody(String url, Map<String, String> headersMap, List<?> paramsList) {
    		return sendParamsListJsonForBody(url, HttpMethod.POST, headersMap, paramsList);
    	}
    
    	public String sendPutParamsListJsonForBody(String url, Map<String, String> headersMap, List<?> paramsList) {
    		return sendParamsListJsonForBody(url, HttpMethod.PUT, headersMap, paramsList);
    	}
    
    	public String sendDeleteParamsListJsonForBody(String url, Map<String, String> headersMap, List<?> paramsList) {
    		return sendParamsListJsonForBody(url, HttpMethod.DELETE, headersMap, paramsList);
    	}
    
    	public String sendParamsListJsonForBody(String url, HttpMethod httpMethod, Map<String, String> headersMap,
    			List<?> paramsList) {
    		if (MapUtils.isNotEmpty(headersMap)) {
    			headersMap.put(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE);
    		}
    		return parseResponseEntityForBody(sendParamsListForResponseEntity(url, httpMethod, headersMap, paramsList));
    	}
    
    	public String parseResponseEntityForBody(ResponseEntity<String> responseEntity) {
    		if (responseEntity == null) {
    			throw new RuntimeException("http返回空");
    		}
    		if (!HttpStatus.OK.equals(responseEntity.getStatusCode())) {
    			throw new RuntimeException("http请求失败");
    		}
    		String body = responseEntity.getBody();
    		log.info(body);
    
    		return body;
    	}
    
    	public Map<String, String> sendGetForHeaders(String url, Map<String, String> headersMap,
    			Map<String, Object> paramsMap, List<String> headerKeyList) {
    		return parseResponseEntityForHeaders(sendParamsMapForResponseEntity(url, HttpMethod.GET, headersMap, paramsMap),
    				headerKeyList);
    	}
    
    	public Map<String, String> parseResponseEntityForHeaders(ResponseEntity<String> responseEntity,
    			List<String> headerKeyList) {
    		if (responseEntity == null) {
    			throw new RuntimeException("http返回空");
    		}
    		if (!HttpStatus.OK.equals(responseEntity.getStatusCode())) {
    			throw new RuntimeException("http请求失败");
    		}
    		HttpHeaders headers = responseEntity.getHeaders();
    
    		Map<String, String> headersMap = new HashMap<String, String>();
    		if (CollectionUtils.isNotEmpty(headerKeyList)) {
    			for (String headerKey : headerKeyList) {
    				headersMap.put(headerKey,
    						CollectionUtils.isEmpty(headers.get(headerKey)) ? null : headers.get(headerKey).get(0));
    			}
    		}
    
    		return headersMap;
    	}
    
    	public ResponseEntity<String> sendParamsMapForResponseEntity(String url, HttpMethod httpMethod,
    			Map<String, String> headersMap, Map<String, Object> paramsMap) {
    		HttpHeaders httpHeaders = null;
    		if (MapUtils.isNotEmpty(headersMap)) {
    			httpHeaders = new HttpHeaders();
    			for (Map.Entry<String, String> entry : headersMap.entrySet()) {
    				httpHeaders.add(entry.getKey(), entry.getValue());
    			}
    		}
    
    		StringBuffer urlStringBuffer = new StringBuffer(url);
    
    		HttpEntity<Object> httpEntity = null;
    		if (HttpMethod.GET.equals(httpMethod)) {
    			if (MapUtils.isNotEmpty(paramsMap)) {
    				urlStringBuffer.append("?");
    				int index = 0;
    				for (Map.Entry<String, Object> entry : paramsMap.entrySet()) {
    					if (index == 0) {
    						urlStringBuffer.append(entry.getKey()).append("=").append(entry.getValue());
    					} else {
    						urlStringBuffer.append("&").append(entry.getKey()).append("=").append(entry.getValue());
    					}
    					index++;
    				}
    			}
    			httpEntity = new HttpEntity<Object>(httpHeaders);
    		} else {
    			if (MapUtils.isNotEmpty(headersMap)
    					&& MediaType.APPLICATION_JSON_VALUE.equals(headersMap.get(HttpHeaders.CONTENT_TYPE))) {
    				httpEntity = new HttpEntity<Object>(JSON.toJSONString(paramsMap), httpHeaders);
    			} else {
    				httpEntity = new HttpEntity<Object>(paramsMap, httpHeaders);
    			}
    		}
    		ResponseEntity<String> responseEntity = baseRestTemplate.exchange(urlStringBuffer.toString(), httpMethod,
    				httpEntity, String.class);
    
    		return responseEntity;
    	}
    
    	public ResponseEntity<String> sendParamsListForResponseEntity(String url, HttpMethod httpMethod,
    			Map<String, String> headersMap, List<?> paramsList) {
    		HttpHeaders httpHeaders = null;
    		if (MapUtils.isNotEmpty(headersMap)) {
    			httpHeaders = new HttpHeaders();
    			for (Map.Entry<String, String> entry : headersMap.entrySet()) {
    				httpHeaders.add(entry.getKey(), entry.getValue());
    			}
    		}
    
    		HttpEntity<Object> httpEntity = null;
    		if (MapUtils.isNotEmpty(headersMap)
    				&& MediaType.APPLICATION_JSON_VALUE.equals(headersMap.get(HttpHeaders.CONTENT_TYPE))) {
    			httpEntity = new HttpEntity<Object>(JSON.toJSONString(paramsList), httpHeaders);
    		} else {
    			httpEntity = new HttpEntity<Object>(paramsList, httpHeaders);
    		}
    		ResponseEntity<String> responseEntity = baseRestTemplate.exchange(url, httpMethod, httpEntity, String.class);
    
    		return responseEntity;
    	}
    
    }
    

      

  • 相关阅读:
    2021冬季学期有感与评价
    Scala变量和数据类型
    Scala运算符
    pytorch基本使用
    Vue组件
    Scala函数式编程
    Python中的运算符
    Scala流程控制
    Scala环境搭建
    用于测试GRPC服务的UI工具BloomRpc
  • 原文地址:https://www.cnblogs.com/zxf330301/p/13800778.html
Copyright © 2011-2022 走看看