Reputation: 306
I am working on a micro service application - a simple online shop. I am learning micro services and want to use Ocelot as my gateway project, but I have a problem in the project.
Right now this is the ocelot.json
file I use where I configured the routes:
{
"Routes": [
//"ProductAPI": "https://localhost:7000",
{
"DownstreamPathTemplate": "/api/productAPI",
"DownstreamScheme": "https",
"DownstreamHostAndPorts": [
{
"Host": "localhost",
"Port": 7000
}
],
"UpstreamPathTemplate": "/api/productAPI",
"UpstreamHttpMethod": [ "GET" ]
},
{
"DownstreamPathTemplate": "/api/productAPI/{id}",
"DownstreamScheme": "https",
"DownstreamHostAndPorts": [
{
"Host": "localhost",
"Port": 7000
}
],
"UpstreamPathTemplate": "/api/productAPI/{id}",
"UpstreamHttpMethod": [ "Get", "DELETE" ],
"AuthenticationOptions": {
"AuthenticationProviderKey": "Bearer"
}
},
{
"DownstreamPathTemplate": "/api/productAPI",
"DownstreamScheme": "https",
"DownstreamHostAndPorts": [
{
"Host": "localhost",
"Port": 7000
}
],
"UpstreamPathTemplate": "/api/productAPI",
"UpstreamHttpMethod": [ "POST", "PUT" ],
"AuthenticationOptions": {
"AuthenticationProviderKey": "Bearer"
}
},
//"CouponAPI": "https://localhost:7001",
{
"DownstreamPathTemplate": "/api/couponAPI",
"DownstreamScheme": "https",
"DownstreamHostAndPorts": [
{
"Host": "localhost",
"Port": 7001
}
],
"UpstreamPathTemplate": "/api/couponAPI",
"UpstreamHttpMethod": [ "Get" ]
},
{
"DownstreamPathTemplate": "/api/couponAPI/GetByCode/{code}",
"DownstreamScheme": "https",
"DownstreamHostAndPorts": [
{
"Host": "localhost",
"Port": 7001
}
],
"UpstreamPathTemplate": "/api/couponAPI/GetByCode/{code}",
"UpstreamHttpMethod": [ "Get" ]
},
{
"DownstreamPathTemplate": "/api/couponAPI/{id}",
"DownstreamScheme": "https",
"DownstreamHostAndPorts": [
{
"Host": "localhost",
"Port": 7001
}
],
"UpstreamPathTemplate": "/api/couponAPI/{id}",
"UpstreamHttpMethod": [ "Get", "DELETE" ],
"AuthenticationOptions": {
"AuthenticationProviderKey": "Bearer"
}
},
{
"DownstreamPathTemplate": "/api/couponAPI",
"DownstreamScheme": "https",
"DownstreamHostAndPorts": [
{
"Host": "localhost",
"Port": 7001
}
],
"UpstreamPathTemplate": "/api/couponAPI",
"UpstreamHttpMethod": [ "POST", "PUT" ],
"AuthenticationOptions": {
"AuthenticationProviderKey": "Bearer"
}
},
//"ShoppingCartAPI": "https://localhost:7003",
{
"DownstreamPathTemplate": "/api/cartAPI/GetCart/{id}",
"DownstreamScheme": "https",
"DownstreamHostAndPorts": [
{
"Host": "localhost",
"Port": 7003
}
],
"UpstreamPathTemplate": "/api/cartAPI/GetCart/{id}",
"UpstreamHttpMethod": [ "GET" ],
"AuthenticationOptions": {
"AuthenticationProviderKey": "Bearer"
}
},
{
"DownstreamPathTemplate": "/api/cartAPI/RemoveCart",
"DownstreamScheme": "https",
"DownstreamHostAndPorts": [
{
"Host": "localhost",
"Port": 7003
}
],
"UpstreamPathTemplate": "/api/cartAPI/RemoveCart",
"UpstreamHttpMethod": [ "POST" ],
"AuthenticationOptions": {
"AuthenticationProviderKey": "Bearer"
}
},
{
"DownstreamPathTemplate": "/api/cartAPI/CartUpsert",
"DownstreamScheme": "https",
"DownstreamHostAndPorts": [
{
"Host": "localhost",
"Port": 7003
}
],
"UpstreamPathTemplate": "/api/cartAPI/CartUpsert",
"UpstreamHttpMethod": [ "POST" ],
"AuthenticationOptions": {
"AuthenticationProviderKey": "Bearer"
}
},
{
"DownstreamPathTemplate": "/api/cartAPI/EmailCartRequest",
"DownstreamScheme": "https",
"DownstreamHostAndPorts": [
{
"Host": "localhost",
"Port": 7003
}
],
"UpstreamPathTemplate": "/api/cartAPI/EmailCartRequest",
"UpstreamHttpMethod": [ "POST" ],
"AuthenticationOptions": {
"AuthenticationProviderKey": "Bearer"
}
},
{
"DownstreamPathTemplate": "/api/cartAPI/ApplyCoupon",
"DownstreamScheme": "https",
"DownstreamHostAndPorts": [
{
"Host": "localhost",
"Port": 7003
}
],
"UpstreamPathTemplate": "/api/cartAPI/ApplyCoupon",
"UpstreamHttpMethod": [ "POST" ],
"AuthenticationOptions": {
"AuthenticationProviderKey": "Bearer"
}
},
//"OrderAPI": "https://localhost:7004",
{
"DownstreamPathTemplate": "/api/orderAPI/GetOrders?userId={id}",
"DownstreamScheme": "https",
"DownstreamHostAndPorts": [
{
"Host": "localhost",
"Port": 7004
}
],
"UpstreamPathTemplate": "/api/orderAPI/GetOrders/{id}",
"UpstreamHttpMethod": [ "GET" ],
"AuthenticationOptions": {
"AuthenticationProviderKey": "Bearer"
}
},
{
"DownstreamPathTemplate": "/api/orderAPI/GetOrders?userId=''",
"DownstreamScheme": "https",
"DownstreamHostAndPorts": [
{
"Host": "localhost",
"Port": 7004
}
],
"UpstreamPathTemplate": "/api/orderAPI/GetOrders/",
"UpstreamHttpMethod": [ "GET" ],
"AuthenticationOptions": {
"AuthenticationProviderKey": "Bearer"
}
},
{
"DownstreamPathTemplate": "/api/orderAPI/GetOrder/{id}",
"DownstreamScheme": "https",
"DownstreamHostAndPorts": [
{
"Host": "localhost",
"Port": 7004
}
],
"UpstreamPathTemplate": "/api/orderAPI/GetOrder/{id}",
"UpstreamHttpMethod": [ "GET" ],
"AuthenticationOptions": {
"AuthenticationProviderKey": "Bearer"
}
},
{
"DownstreamPathTemplate": "/api/orderAPI/UpdateOrderStatus/{id}",
"DownstreamScheme": "https",
"DownstreamHostAndPorts": [
{
"Host": "localhost",
"Port": 7004
}
],
"UpstreamPathTemplate": "/api/orderAPI/UpdateOrderStatus/{id}",
"UpstreamHttpMethod": [ "POST" ],
"AuthenticationOptions": {
"AuthenticationProviderKey": "Bearer"
}
},
{
"DownstreamPathTemplate": "/api/orderAPI/ValidateStripeSession",
"DownstreamScheme": "https",
"DownstreamHostAndPorts": [
{
"Host": "localhost",
"Port": 7004
}
],
"UpstreamPathTemplate": "/api/orderAPI/ValidateStripeSession",
"UpstreamHttpMethod": [ "POST" ],
"AuthenticationOptions": {
"AuthenticationProviderKey": "Bearer"
}
},
{
"DownstreamPathTemplate": "/api/orderAPI/CreateStripeSession",
"DownstreamScheme": "https",
"DownstreamHostAndPorts": [
{
"Host": "localhost",
"Port": 7004
}
],
"UpstreamPathTemplate": "/api/orderAPI/CreateStripeSession",
"UpstreamHttpMethod": [ "POST" ],
"AuthenticationOptions": {
"AuthenticationProviderKey": "Bearer"
}
},
{
"DownstreamPathTemplate": "/api/orderAPI/CreateOrder",
"DownstreamScheme": "https",
"DownstreamHostAndPorts": [
{
"Host": "localhost",
"Port": 7004
}
],
"UpstreamPathTemplate": "/api/orderAPI/CreateOrder",
"UpstreamHttpMethod": [ "POST" ],
"AuthenticationOptions": {
"AuthenticationProviderKey": "Bearer"
}
}
],
"GlobalConfiguration": {
"BaseUrl": "https://localhost:7777"
}
}
This is the program.cs
file:
using Ocelot.DependencyInjection;
using Ocelot.Middleware;
using Shop.GatewayProject.Extensions;
var builder = WebApplication.CreateBuilder(args);
builder.AddAppAuthentication();
builder.Configuration.AddJsonFile("ocelot.json", optional: false, reloadOnChange: true);
builder.Services.AddOcelot(builder.Configuration);
var app = builder.Build();
app.MapGet("/", () => "Hello World!");
app.UseOcelot().GetAwaiter().GetResult();
app.Run();
The appsettings.json
is basic.
Error:
warn: Ocelot.DownstreamRouteFinder.Middleware.DownstreamRouteFinderMiddleware[0]
requestId: 0HMVPEQ365DJH:00000001, previousRequestId: No PreviousRequestId, message: 'DownstreamRouteFinderMiddleware setting pipeline errors. IDownstreamRouteFinder returned Error Code: UnableToFindDownstreamRouteError Message: Failed to match Route configuration for upstream path: /, verb: GET.'warn: Ocelot.Responder.Middleware.ResponderMiddleware[0]
requestId: 0HMVPEQ365DJH:00000001, previousRequestId: No PreviousRequestId, message: 'Error Code: UnableToFindDownstreamRouteError Message: Failed to match Route configuration for upstream path: /, verb: GET. errors found in ResponderMiddleware. Setting error response for request path:/, request method: GET'
I tried checking the routes and all seems fine. In the BaseUrl
I have the gateway projects url.
I tried to keep only one route that I know would work for sure but still couldn't manage to fix it.
Upvotes: 0
Views: 702
Reputation: 734
Its not the error, its the warning
warn: Ocelot.DownstreamRouteFinder.Middleware.DownstreamRouteFinderMiddleware[0]
requestId: 0HMVPEQ365DJH:00000001, previousRequestId: No PreviousRequestId, message: 'DownstreamRouteFinderMiddleware setting pipeline errors. IDownstreamRouteFinder returned Error Code: UnableToFindDownstreamRouteError Message: Failed to match Route configuration for upstream path: /, verb: GET.'
Setting the default route should resolve the warning as shown below
{
......
......
{
"DownstreamPathTemplate": "/",
"DownstreamScheme": "https",
"DownstreamHostAndPorts": [
{
"Host": "localhost",
"Port": 7000
}
],
"UpstreamPathTemplate": "/",
"UpstreamHttpMethod": [ "GET" ]
},
......
......
Upvotes: 0