使用 spring-cloud-gateway 时考虑@RequestBody 参数

Account for @RequestBody parameter when using spring-cloud-gateway

我有以下 Spring-Cloud-Gateway 配置和该配置的目标控制器端点,但当请求到达端点时,我的 @RequestBody 参数始终为 null。能否请您指导我应该如何修改我的 Spring-Cloud-Gateway 配置,这样问题就不会持续存在?

Configuration:::

---->>>

@Configuration
public class SpringCloudConfig {
    @Autowired SlotWalletDiscoveryService slotWalletDiscoveryService;

    @Bean
    public RouteLocator gatewayRoutes(RouteLocatorBuilder builder) {
        return builder.routes()
                  .route(r -> r.path("/api/bank/slot/account/**") //intercept calls to
                               .uri("http://localhost:8761/") //forward to
                               .id("employeeModule"))
                  .build();
    }

   @Bean
   public ServerCodecConfigurer serverCodecConfigurer() {
       return ServerCodecConfigurer.create();
   }
}



Endpoint:::

--->>>

@RestController
@RequestMapping("/api/bank/slot/account/")
class BankRequestController() {

    @GetMapping("/{ref}") fun test2(@PathVariable("ref") userRef: String, @RequestBody 
        bankRequest: BankRequest?, @RequestHeader(HttpHeaders.AUTHORIZATION)  authHeader : String): String? {
        return "Hello JavaInUse Called in First Service $userRef"
}



Debugger:::

--->>>

这是一个很好的例子,但如果有人能告诉我如何根据我的案例场景调整它,我将不胜感激。

https://github.com/spring-cloud/spring-cloud-gateway/blob/master/spring-cloud-gateway-sample/src/main/java/org/springframework/cloud/gateway/sample/GatewaySampleApplication.java

我试过了,但没有成功:

@Bean

public RouteLocator gatewayRoutes(RouteLocatorBuilder builder) {
    return builder.routes()
                  .route(r -> r.path("/api/bank/slot/account/**").and()
        .readBody(BankRequest.class, bankRequest -> {
                      return true;
                  }) //intercept calls to
                               .uri("http://localhost:8761/") //forward to
                               .id("employeeModule"))
                  .build();
}

问题与 spring-cloud-gateway 配置无关。在 Insomnia 我必须指定