package io.renren.modules.data.util;
import com.alibaba.fastjson.JSON;
import io.renren.common.exception.RRException;
import io.renren.modules.data.constants.RuiHttpStatus;
import io.renren.modules.data.entity.base.RuiPageResponse;
import io.renren.modules.data.entity.base.RuiResponse;
import org.springframework.core.ParameterizedTypeReference;
import org.springframework.http.*;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
/**
* @author chenkang
* @date 2022/12/1 10:34
*/
public class ReqUtil {
/**
* 新增接口 携带body
* @param url 请求地址
* @param params 请求参数
* @param token 携带参数
* @param <T> 泛型
* @return T
*/
public static <T> RuiResponse<T> requestAdd(String url,T params,ParameterizedTypeReference<RuiResponse<T>> responseType ,String token){
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.set("accessToken",token);
HttpEntity<String> request = new HttpEntity<>(JSON.toJSONString(params),headers);
RestTemplate restTemplate = new RestTemplate();
restTemplate.setErrorHandler(new RequestErrorHandler());
ResponseEntity<RuiResponse<T>> exchange= restTemplate.exchange(url, HttpMethod.POST, request, responseType);
System.out.println(exchange);
Optional.ofNullable(exchange).map(ResponseEntity::getBody).map(RuiResponse::getCode).filter(code-> RuiHttpStatus.CODE_2.getCode().equals(code)).orElseThrow(()->new RRException("新增状态异常"));
return exchange.getBody();
}
/**
* 修改接口 携带body
* @param url 请求地址
* @param params 请求参数
* @param token 携带参数
* @param <T> 泛型
* @return T
*/
public static <T> RuiResponse requestUpdate(String url,T params,String token){
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.set("accessToken",token);
RestTemplate restTemplate = new RestTemplate();
restTemplate.setErrorHandler(new RequestErrorHandler());
HttpEntity<String> request = new HttpEntity<>(JSON.toJSONString(params),headers);
ResponseEntity<RuiResponse> exchange= restTemplate.exchange(url, HttpMethod.POST, request,RuiResponse.class);
Optional.ofNullable(exchange).map(ResponseEntity::getBody).map(RuiResponse::getCode).filter(code-> RuiHttpStatus.CODE_2.getCode().equals(code)).orElseThrow(()->new RRException("修改状态异常"));
return exchange.getBody();
}
/**
* 删除
* @param url 地址
* @param id id信息
* @param token token信息
* @return RuiResponse
*/
public static RuiResponse requestDelete(String url,String id,String token){
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
headers.set("accessToken",token);
MultiValueMap<String,Object> params = new LinkedMultiValueMap<>();
params.add("id", id);
RestTemplate restTemplate = new RestTemplate();
HttpEntity<MultiValueMap<String, Object>> request = new HttpEntity<>(params, headers);
restTemplate.setErrorHandler(new RequestErrorHandler());
ResponseEntity<RuiResponse> responseEntity = restTemplate.postForEntity(url, request, RuiResponse.class);
Optional.ofNullable(responseEntity).map(ResponseEntity::getBody).map(RuiResponse::getCode).filter(code-> RuiHttpStatus.CODE_2.getCode().equals(code)).orElseThrow(()->new RRException("删除状态异常"));
return responseEntity.getBody();
}
/**
* 删除
* @param url 地址
* @param token token信息
* @return RuiResponse
*/
public static <T> RuiResponse<RuiPageResponse<T>> requestList(String url, Map<String,String> params,ParameterizedTypeReference<RuiResponse<RuiPageResponse<T>>> responseType, String token){
HttpHeaders headers = new HttpHeaders();
headers.set("accessToken",token);
HttpEntity<MultiValueMap<String, Object>> request = new HttpEntity<>(null, headers);
RestTemplate restTemplate = new RestTemplate();
Map<String,Object> param =new HashMap<>();
params.forEach(param::put);
if(Objects.nonNull(param.get("pageSize"))){
param.put("pageSize",Integer.parseInt(param.get("pageSize").toString()));
}
ResponseEntity<RuiResponse<RuiPageResponse<T>>> entity = restTemplate.exchange(url, HttpMethod.GET, request, responseType, param);
System.out.println(entity.getBody());
Optional.of(entity).map(ResponseEntity::getBody).map(RuiResponse::getCode).filter(code-> RuiHttpStatus.CODE_2.getCode().equals(code)).orElseThrow(()->new RRException("查询状态异常"));
return entity.getBody();
}
/**
* 获取单个
* @param url 地址
* @param id id信息
* @param token token信息
* @return RuiResponse
*/
public static <T> RuiResponse<T> requestDetail(String url,String id,ParameterizedTypeReference<RuiResponse<T>> responseType,String token){
RestTemplate restTemplate = new RestTemplate();
restTemplate.setErrorHandler(new RequestErrorHandler());
HttpHeaders headers = new HttpHeaders();
headers.set("accessToken",token);
HttpEntity<MultiValueMap<String, Object>> request = new HttpEntity<>(null, headers);
ResponseEntity<RuiResponse<T>> responseEntity = restTemplate.exchange(url, HttpMethod.GET, request, responseType, id);
Optional.ofNullable(responseEntity).map(ResponseEntity::getBody).map(RuiResponse::getCode).filter(code-> RuiHttpStatus.CODE_2.getCode().equals(code)).orElseThrow(()->new RRException("获取单个状态异常"));
return responseEntity.getBody();
}
}
请求工具类
最新推荐文章于 2024-05-31 10:46:10 发布