首页 > 其他分享 >0207_【掌握】HTTP请求拦截

0207_【掌握】HTTP请求拦截

时间:2022-12-26 23:44:06浏览次数:44  
标签:HTTP yootk request springframework 0207 import org 拦截 public

1、
package com.yootk.consumer.interceptor;

import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpRequest;
import org.springframework.http.client.ClientHttpRequestExecution;
import org.springframework.http.client.ClientHttpRequestInterceptor;
import org.springframework.http.client.ClientHttpResponse;
import org.springframework.stereotype.Component;

import java.io.IOException;

@Slf4j // 添加日志注解
@Component // 配置之后自动拦截生效

public class MicroServiceHTTPInterceptor implements ClientHttpRequestInterceptor

{

@Override

public ClientHttpResponse intercept(HttpRequest request,byte[] body,ClientHttpRequestExecution execution)throws IOException

{

log.info("【HTTP请求拦截】服务主机:{}、REST路径:{}", request.getURI().getHost(), request.getURI().getPath());

        // 此时可以将一些Token的数据保存在头信息之中,会随着每次的请求一起发送到服务端

        request.getHeaders().set("token", "www.yootk.com"); // 随意添加的头信息

        return execution.execute(request, body); // 发送请求

}

 

}

 

2、
package com.yootk.consumer.config;

import com.yootk.consumer.interceptor.MicroServiceHTTPInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

import java.util.Collections;

@Configuration
public class RestTemplateConfig { // 实现RestTemplate的相关配置

@Autowired
private MicroServiceHTTPInterceptor interceptor; // 注入拦截器

@Bean // 向Spring容器之中进行Bean注册
public RestTemplate getRestTemplate() {

   RestTemplate template = new RestTemplate();

    template.setInterceptors((Collections.singletonList(this.interceptor) );

     return template;

  }

}

 

3、

package com.yootk.provider.action;

import com.yootk.common.dto.DeptDTO;
import com.yootk.service.IDeptService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import javax.servlet.http.HttpServletRequest;
import java.util.Enumeration;

@RestController
@RequestMapping("/provider/dept/*") // 微服务提供者父路径
@Slf4j // 使用一个注解

public class DeptAction {

@Autowired
private IDeptService deptService;

  @GetMapping("get/{id}")

public Object get(@PathVariable("id") long id) {
  this.printRequestHeaders("get");
  return this.deptService.get(id);
}

 @PostMapping("add")

public Object add(@RequestBody DeptDTO deptDTO) { // 后面会修改参数模式为JSON
  this.printRequestHeaders("add");
  return this.deptService.add(deptDTO);
}

    @GetMapping("list")

public Object list() {
this.printRequestHeaders("list");
return this.deptService.list();
}

  @GetMapping("split")

public Object split(int cp, int ls, String col, String kw) {
this.printRequestHeaders("split");
return this.deptService.split(cp, ls, col, kw);
}

   private void printRequestHeaders(String restName) {    // 实现所有请求头信息的输出

      HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();

  Enumeration<String> headerEnums = request.getHeaderNames();
  while (headerEnums.hasMoreElements()) {
  String headerName = headerEnums.nextElement();
    log.info("【{}】头信息:{} = {}", restName, headerName, request.getHeader(headerName));
  }

}

}

标签:HTTP,yootk,request,springframework,0207,import,org,拦截,public
From: https://www.cnblogs.com/cnetsa/p/17007154.html

相关文章

  • 配置https虚拟主机
    配置https虚拟主机配置httpd.conf,取消以下注释LoadModulessl_modulemodules/mod_ssl.soInclude/etc/httpd24/extra/httpd-ssl.conf[root@liuconf]#vimhttpd.conf......
  • 配置httpd虚拟主机
    配置httpd虚拟主机相同ip不同端口设置主机名[root@liu~]#vim/usr/local/apache/conf/httpd.conf...#Ifyourhostdoesn'thavearegisteredDNSname,enteri......
  • 配置https虚拟主机
    配置https步骤生成证书openssl实现私有CA参考配置httpd.conf,取消以下内容的注释  LoadModulessl_modulemodules/mod_ssl.so  Include/etc/httpd24/extra/......
  • 配置httpd虚拟主机
    环境准备编译安装httpd参考虚拟主机虚拟主机有三类:相同IP不同端口不同IP相同端口相同IP相同端口不同域名相同IP不同端口yum安装文件位置:vim/etc/httpd/co......
  • 解决新版chrome在http协议下无法调用摄像头和麦克风的问题
    新版本的chrome浏览器,在http协议下安全性原因导致无法调用摄像头和麦克风,解决方法如下:方法一:在浏览器地址栏中输入“chrome://flags/#unsafely-treat-insecure-origin-as......
  • HTTPS性能优化(转)
    分析性能损耗产⽣性能消耗的两个环节:1.第⼀个环节, TLS 协议握⼿过程;2.第⼆个环节,握⼿后的对称加密报⽂传输。对于第⼆环节,现在主流的对称加密算法 AES、ChaCha20 ......
  • https Java SSL Exception protocol_version
      在java代码中,使用HttpClient爬取https页面时,遇到了这个bug:javax.net.ssl.SSLException:Receivedfatalalert:protocol_version     先奉上初始的代码:1/**2......
  • mybatis 之定义拦截器 控制台SQL的打印
    类型先说明Mybatis中可以被拦截的类型具体有以下四种:1.Executor:拦截执行器的方法。2.ParameterHandler:拦截参数的处理。3.ResultHandler:拦截结果集的处理。4.StatementHa......
  • iis设置 https 证书
    iishttps绑定1、进入iis导入服务器证书pfx2、双击pfx证书文件进行默认安装3、进入iis站点绑定证书 问题1:如果导入一直提示密码不正确,其实密码是对的尝试安装openss......
  • nginx 一个端口 多路由配置多项目 https 配置项
    #usernobody;userroot;worker_processes1;worker_rlimit_nofile51200;events{useepoll;worker_connections51200;multi_accepton;}http{i......