使用 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
我必须指定
我有以下 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
我必须指定