我正在构建一个项目,其中有多个微服务..其中一个服务是产品服务。我插入了一个 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
我尝试以多种方式进行调试,我添加了日志,但可以理解异常本身发生的原因。
谢谢大家,原来我有依赖性
<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>
因为第一个版本不兼容所有版本