Spring AWS 中的云网关未正确路由
Spring Cloud Gateway in AWS not routing correctly
我创建了一个简单的 REST 服务,如下所示:
@RestController
public class ServiceController {
@GetMapping(value = "/getSimpleResponse")
public ResponseEntity<String> getSimpleResponse() {
return new ResponseEntity<>("Hello from Service 1", HttpStatus.OK);
}
}
我将其部署到 AWS elastic beanstalk 并且运行良好。这里:Service 1 in AWS
现在我创建一个 Spring 云网关服务,路由配置如下:
@Configuration
public class GatewayConfig {
@Bean
public RouteLocator gatewayRoutes(RouteLocatorBuilder builder) {
return builder.routes()
.route(getFirstTestServiceRoute())
.build();
}
private Function<PredicateSpec, Route.AsyncBuilder> getFirstTestServiceRoute() {
return p -> p
.path("/service1/**")
.uri("http://testservice1-env.qgwe5a4qq8.ap-south-1.elasticbeanstalk.com/")
.id("service1");
}
}
我在 AWS Elastic beanstalk 中部署网关应用程序 here。
但是 GatewayURL/service1/getSimpleResponse returns 一个白标错误页面。我期待与服务 1 相同的输出。我做错了什么?
尝试在浏览器中打开您在网关中设置的 URL,您将看到相同的 Whitelabel 错误页面。
您的端点是 /getSimpleResponse 但您的网关不知道。里面没有什么魔法,根据你的配置就可以了。
此外,您的堆栈也不会在本地工作。从让它在本地运行开始,然后才将它一点一点地移动到云端。
我在 class 级别缺少 RequestMapping。我的 URL 格式是
GatewayURL/service1/getSimpleResponse
我认为这是因为 Spring 云网关可能将完整路径 (/service1/getSimpleResponse) 附加到下游服务 URL
@RestController
@RequestMapping("/service1")
public class ServiceController {
@GetMapping(value = "/getSimpleResponse")
public ResponseEntity<String> getSimpleResponse() {
return new ResponseEntity<>("Hello from Service 1", HttpStatus.OK);
}
}
我创建了一个简单的 REST 服务,如下所示:
@RestController
public class ServiceController {
@GetMapping(value = "/getSimpleResponse")
public ResponseEntity<String> getSimpleResponse() {
return new ResponseEntity<>("Hello from Service 1", HttpStatus.OK);
}
}
我将其部署到 AWS elastic beanstalk 并且运行良好。这里:Service 1 in AWS
现在我创建一个 Spring 云网关服务,路由配置如下:
@Configuration
public class GatewayConfig {
@Bean
public RouteLocator gatewayRoutes(RouteLocatorBuilder builder) {
return builder.routes()
.route(getFirstTestServiceRoute())
.build();
}
private Function<PredicateSpec, Route.AsyncBuilder> getFirstTestServiceRoute() {
return p -> p
.path("/service1/**")
.uri("http://testservice1-env.qgwe5a4qq8.ap-south-1.elasticbeanstalk.com/")
.id("service1");
}
}
我在 AWS Elastic beanstalk 中部署网关应用程序 here。
但是 GatewayURL/service1/getSimpleResponse returns 一个白标错误页面。我期待与服务 1 相同的输出。我做错了什么?
尝试在浏览器中打开您在网关中设置的 URL,您将看到相同的 Whitelabel 错误页面。
您的端点是 /getSimpleResponse 但您的网关不知道。里面没有什么魔法,根据你的配置就可以了。
此外,您的堆栈也不会在本地工作。从让它在本地运行开始,然后才将它一点一点地移动到云端。
我在 class 级别缺少 RequestMapping。我的 URL 格式是
GatewayURL/service1/getSimpleResponse
我认为这是因为 Spring 云网关可能将完整路径 (/service1/getSimpleResponse) 附加到下游服务 URL
@RestController
@RequestMapping("/service1")
public class ServiceController {
@GetMapping(value = "/getSimpleResponse")
public ResponseEntity<String> getSimpleResponse() {
return new ResponseEntity<>("Hello from Service 1", HttpStatus.OK);
}
}