FeignConfiguration.java 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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. }
  25. }
  26. /**
  27. * @desc : 拦截feign请求
  28. * @author : 洪旭东
  29. * @date : 2024-03-12 17:08
  30. */
  31. // @Bean
  32. public RequestInterceptor cloudContextInterceptor() {
  33. ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder
  34. .getRequestAttributes();
  35. HttpServletRequest request;
  36. if (attributes != null) {
  37. request = attributes.getRequest();
  38. if ("".equals(request.getRequestURI()) && request.getAttribute("svcCode")!=null) {
  39. String svcCode = request.getAttribute("svcCode").toString();
  40. return template -> {
  41. //例
  42. //@PostMapping("//" + "mdm-server-$CLUSTER_ID" + Constant.USER+"/get_current")
  43. String url = template.url();
  44. //将$CLUSTER_ID替换为集群名称
  45. if (url.contains("$CLUSTER_ID")) {
  46. url = url.replace("$CLUSTER_ID", svcCode);
  47. template.uri(url);
  48. }
  49. //添加http前缀
  50. if (url.startsWith("//")) {
  51. url = "http:" + url;
  52. template.target(url);
  53. template.uri("");
  54. }
  55. };
  56. }
  57. }
  58. return requestTemplate -> {};
  59. }
  60. }