下面只记录使用内容不做衍生解读。
依赖包:
1 2 3 4 5 6 7 8 9 | <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.55</version> </dependency> |
采用RestTemplateBuilder方式进行构建。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | @Configuration public class RestTemplateConfig { @Resource private RestTemplateBuilder restTemplateBuilder; @Bean public RestTemplate restTemplate() { FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter(); RestTemplate restTemplate = restTemplateBuilder.build(); List<HttpMessageConverter<?>> messageConverters = restTemplate.getMessageConverters(); List<HttpMessageConverter<?>> converters = messageConverters.stream() .filter(item -> !(item instanceof MappingJackson2HttpMessageConverter)) .collect(Collectors.toList()); converters.add(converter); restTemplate.setMessageConverters(converters); return restTemplate; } } |
默认情况下是使用jackson2作为json处理工具,我们需要将jackson2的converter删除掉,并将FastJson的Converter放进去即可。
1 2 3 4 5 6 7 8 | HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON_UTF8); // 设置Authorization 为Bearer 方式的值 headers.setBearerAuth(userAccessToken); // T 是请求对象 T t = new T(); HttpEntity<T> entity = new HttpEntity<>(t, headers) LockSheetResponse lockSheetRes = restTemplate.postForObject(url, entity, LockSheetResponse.class) |
这样t会自动使用fastjson converter转化成json,请求响应会自动映射到LockSheetResponse实体对象中。
如果resttemplate返回400 响应需要检查发送过去的参数是否满足需要,比如驼峰有没有转成下划线等等。如果请求参数不满足要求将返回400。