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); } }