FeignConfiguration.java 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package com.dk.common.infrastructure.config;
  2. import feign.RequestInterceptor;
  3. import feign.RequestTemplate;
  4. import org.springframework.context.annotation.Bean;
  5. import org.springframework.context.annotation.Configuration;
  6. import org.springframework.web.context.request.RequestContextHolder;
  7. import org.springframework.web.context.request.ServletRequestAttributes;
  8. import javax.servlet.http.HttpServletRequest;
  9. /**
  10. * @author H_x_d
  11. * @date_time 2020-09-17 10:36
  12. * @description Feign配置文件
  13. */
  14. @Configuration
  15. public class FeignConfiguration implements RequestInterceptor {
  16. @Override
  17. public void apply(RequestTemplate requestTemplate) {
  18. ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder
  19. .getRequestAttributes();
  20. HttpServletRequest request;
  21. if (attributes != null) {
  22. request = attributes.getRequest();
  23. requestTemplate.header("Authorization", request.getHeader("Authorization"));
  24. if (request.getRequestURI().contains("/register_company") && request.getAttribute("svcCode")!=null) {
  25. String svcCode = request.getAttribute("svcCode").toString();
  26. //例
  27. //@PostMapping("//" + "mdm-server-$CLUSTER_ID" + Constant.USER+"/get_current")
  28. String url = requestTemplate.url();
  29. //将$CLUSTER_ID替换为集群名称
  30. if (url.contains("$CLUSTER_ID")) {
  31. url = url.replace("$CLUSTER_ID", svcCode);
  32. requestTemplate.uri(url);
  33. }
  34. //添加http前缀
  35. if (url.startsWith("//")) {
  36. url = "http:" + url;
  37. requestTemplate.target(url);
  38. requestTemplate.uri("");
  39. }
  40. }
  41. }
  42. }
  43. }