Spring Boot.API GateWay,无法从Spring boot GateWay访问服务

问题描述 投票:0回答:1

我正在构建一个项目,其中有多个微服务..其中一个服务是产品服务。我插入了一个 api GateWay,因此客户端请求首先发送到网关,然后发送到特定服务...但我无法在我点击网关后访问我的产品服务或任何其他服务。

我收到的错误消息是

No static resource api/product" suggests that the API Gateway is looking for a static resource at the path "/api/product

这里是产品服务的application.poperties文件

spring.data.mongodb.uri=mongodb://localhost:27017/product-service
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka
spring.application.name=product-service
server.port=0

这是 APi GateWay 的 application.poperties 文件

spring.cloud.gateway.routes[0].id=product-service
spring.cloud.gateway.routes[0].uri=lb://product-service
spring.cloud.gateway.routes[0].predicates[0]=Path=/api/product

我不得不提的是,所有服务都注册在Eureka Server中,包括Api网关

附加说明,当我直接尝试访问其端口上的产品服务时,我会收到响应。

这是产品控制器供参考


@RestController///to expose a restful api
@RequestMapping("/api/product")
@RequiredArgsConstructor
public class ProductController {

    private  final ProductService productService;

    @PostMapping
    @ResponseStatus(HttpStatus.CREATED)
    public void createProduct(@RequestBody ProductRequest productRequest){
        productService.createProduct(productRequest);
    }

    @GetMapping
    @ResponseStatus(HttpStatus.OK)
    public List<ProductResponse> getAllProducts() {
        return productService.getAllProducts();
    }
    
}

这是我提出的要求(在 Insomnia 上提出):

http://localhost:8080/api/product

我尝试以多种方式进行调试,我添加了日志,但可以理解异常本身发生的原因。

spring-boot microservices netflix-eureka api-gateway
1个回答
0
投票

谢谢大家,原来我有依赖性

<dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-gateway-mvc</artifactId>
    </dependency>

应该是

<dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-gateway</artifactId>
    </dependency>

因为第一个版本不兼容所有版本

© www.soinside.com 2019 - 2024. All rights reserved.