http请求调用RestTemplate和@FeignClient使用心得

it2024-05-10  44

一、RestTemplate

请求方法使用

public <T> ResponseEntity<T> exchange(String url, HttpMethod method, @Nullable HttpEntity<?> requestEntity, ParameterizedTypeReference<T> responseType, Object... uriVariables) throws RestClientException { Type type = responseType.getType(); RequestCallback requestCallback = httpEntityCallback(requestEntity, type); ResponseExtractor<ResponseEntity<T>> responseExtractor = responseEntityExtractor(type); return nonNull(execute(url, method, requestCallback, responseExtractor, uriVariables)); }

1、RestTemplate请求添加header

HttpEntity<?> requestEntity参数中可添加header BaseSAPResponse<SAPResponseData<SAPShopInfo>> response = restTemplate.exchange(getShopCompanyInfoUrl+filter, HttpMethod.GET, new HttpEntity<String>(headers), new ParameterizedTypeReference<BaseSAPResponse<SAPResponseData<SAPShopInfo>>>() { }).getBody();

2、URL拼参数

可直接拼参数,即使拼接的参数中有空格也可以,如:&$filter=externalCode eq '123'

如果使用apache包下的HttpClient,拼接的参数中有空格就不可以。

二、@FeignClient

方式1:

@FeignClient(url = "https://api15.sapsf.cn/odata/v2", name = "sap", fallbackFactory = SapSfRemoteHystrix.class) public interface SapSfRemote { /** * 获取门店主体公司名字 * @return */ @RequestMapping(path = "/cust_Shop?$format=json&$expand=cust_legalNav&$select=externalCode,externalName,cust_legalNav/name,cust_legalNav/externalCode", method = RequestMethod.GET, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE) BaseSAPResponse<SAPResponseData<SAPShopInfo>> queryShopBelongCompany(@RequestParam("$filter") String filter, @RequestHeader("Authorization") String authorization); }

方式2:

@FeignClient(name = "shop-employee", fallback = EmployeeRemoteHystrix.class) public interface EmployeeRemote { /** * 根据根据门店编号和条件查询门店技师列表 * * @param shopId * @param statusList * @param notStatusList * @return */ @GetMapping(value = "/openApi/query/queryEmployeeListByShopId") BizBaseResponse<EmployeesListResponse> queryEmployeeListByShopIdGet(@RequestParam("shopId") Integer shopId, @RequestParam("statusList") List<Integer> statusList, @RequestParam("notStatusList") List<Integer> notStatusList); }

 

最新回复(0)