From ccc68630f09a47268c4c06004ab12466d8a7f4d6 Mon Sep 17 00:00:00 2001 From: bunny <1319900154@qq.com> Date: Mon, 26 May 2025 18:52:27 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20=E8=BF=9C=E7=A8=8B=E8=B0=83?= =?UTF-8?q?=E7=94=A8-Feign=E6=8B=A6=E6=88=AA=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../interceptor/XTokenRequestInterceptor.java | 17 +++++++++++++++++ .../src/main/resources/application-feign.yaml | 4 +++- .../service/controller/ProductController.java | 17 +++++++++-------- 3 files changed, 29 insertions(+), 9 deletions(-) create mode 100644 cloud-demo/services/service-order/src/main/java/cn/bunny/service/interceptor/XTokenRequestInterceptor.java diff --git a/cloud-demo/services/service-order/src/main/java/cn/bunny/service/interceptor/XTokenRequestInterceptor.java b/cloud-demo/services/service-order/src/main/java/cn/bunny/service/interceptor/XTokenRequestInterceptor.java new file mode 100644 index 0000000..7602b05 --- /dev/null +++ b/cloud-demo/services/service-order/src/main/java/cn/bunny/service/interceptor/XTokenRequestInterceptor.java @@ -0,0 +1,17 @@ +package cn.bunny.service.interceptor; + +import feign.RequestInterceptor; +import feign.RequestTemplate; +import org.springframework.stereotype.Component; + +import java.util.UUID; + +@Component +public class XTokenRequestInterceptor implements RequestInterceptor { + + @Override + public void apply(RequestTemplate requestTemplate) { + requestTemplate.header("X-Token", UUID.randomUUID().toString()); + } + +} diff --git a/cloud-demo/services/service-order/src/main/resources/application-feign.yaml b/cloud-demo/services/service-order/src/main/resources/application-feign.yaml index 7d17590..d7143e5 100644 --- a/cloud-demo/services/service-order/src/main/resources/application-feign.yaml +++ b/cloud-demo/services/service-order/src/main/resources/application-feign.yaml @@ -13,4 +13,6 @@ spring: service-product: logger-level: full connect-timeout: 3000 - read-timeout: 5000 # 最多等待对方 5s \ No newline at end of file + read-timeout: 5000 # 最多等待对方 5s + request-interceptors: + - cn.bunny.service.interceptor.XTokenRequestInterceptor \ No newline at end of file diff --git a/cloud-demo/services/service-product/src/main/java/cn/bunny/service/controller/ProductController.java b/cloud-demo/services/service-product/src/main/java/cn/bunny/service/controller/ProductController.java index e036da0..3d60c2c 100644 --- a/cloud-demo/services/service-product/src/main/java/cn/bunny/service/controller/ProductController.java +++ b/cloud-demo/services/service-product/src/main/java/cn/bunny/service/controller/ProductController.java @@ -3,14 +3,13 @@ package cn.bunny.service.controller; import cn.bunny.model.product.bean.Product; import cn.bunny.service.service.ProductService; import io.swagger.v3.oas.annotations.Operation; +import jakarta.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.util.concurrent.TimeUnit; - @RestController @RequestMapping("/api/product") @RequiredArgsConstructor @@ -20,12 +19,14 @@ public class ProductController { @Operation(summary = "根据id查询商品") @GetMapping("{id}") - public Product getProduct(@PathVariable("id") Long productId) { - try { - TimeUnit.SECONDS.sleep(6); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } + public Product getProduct(@PathVariable("id") Long productId, HttpServletRequest request) { + // try { + // TimeUnit.SECONDS.sleep(6); + // } catch (InterruptedException e) { + // throw new RuntimeException(e); + // } + + System.out.println("request-X-Token: " + request.getHeader("X-Token")); return productService.getProductById(productId); } }