RestTemplate如何配置调用接口的请求头呢?

重生 Spring 发布时间:2024-02-03 08:56:56 阅读数:10703 1
下文笔者讲述RestTemplate调用接口时,配置请求头的方法及示例分享
 我们都知道RestTemplate默认调用时,
    不会携带请求头,如果我们需要携带请求头,则必须进行额外配置
那么如何配置RestTempate调用请求头呢?下文笔者将一一道来,如下所示

RestTemplate携带请求头的实现思路

 
方式一:
  在每次发送请求时
   构建一个HttpEntity对象
   传入请求参数与请求头

方式二:
  通过配置RestTemplate
   使使用RestTemplate调用的http请求都携带上请求头
方式一
  每次发送请求时
   构建一个HttpEntity对象
   传入请求参数和请求头

以下是通过postForObject为例实现

@GetMapping("/test")
public Map<String, Object> getBlobMetadatalist(){
    // 构建你的请求头
    HttpHeaders headers = new HttpHeaders();
    headers.set("token","************************");
    headers.set("Content-Type", "application/json");
    // 构建你的请求体参数
    HashMap<String, String> map = HashMap<>();
    map.put("yourParma", "youValue");
    // 组合请求头与请求体参数
    HttpEntity<String> requestEntity = new HttpEntity<>(JSONObject.toJSONString(map), headers);
    // path -> 请求地址,requestEntity -> 请求参数相关对象,HashMap.class -> 返回结果映射类型
    return restTemplate.postForObject(path, requestEntity, HashMap.class);
}

方式二
  配置RestTemplate
  使用RestTemplate调用的http请求都携带上请求头
   
/**
 * RestTemplate配置类
 */
@Slf4j
@Configuration
public class RestTemplateConfig {
 
    /**
     * 常用远程调用RestTemplate
     * @return restTemplate
     */
    @Bean("restTemplate")
    public RestTemplate restTemplate(){
        RestTemplate restTemplate = new RestTemplate();
        // 设置通用的请求头
        HeaderRequestInterceptor myHeader = new HeaderRequestInterceptor("token", "**********");              
        List<ClientHttpRequestInterceptor> interceptors = new ArrayList<>();
        interceptors.add(myHeader);
        restTemplate.setInterceptors(interceptors);
        return restTemplate;
    }
 
   /**
     * 拦截器类
     * restTemplatep后续调用请求时携带请求头
     */
    public static class HeaderRequestInterceptor implements ClientHttpRequestInterceptor{
 
        private final String header;
 
        private final String value;
 
        public HeaderRequestInterceptor(String header, String value){
            this.header = header;
            this.value = value;
        }
 
        @Override
        public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution) throws IOException {
            request.getHeaders().set(header, value);
            return execution.execute(request, body);
        }
 
    }

}
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaFramework/Spring/202402/7897.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者