Неверный request url в swagger при запросе через ocelot
При запросах через страницу swagger в gateway, в запрос подставляется порт gateway, а не приложения за ним, возникает ошибка 404.
При запросах в swagger через прямой адресс к приложению (127.0.0.1:5100), все запросы работают.
Как изменить url запроса через gateway?
Запрос через ocelot:
ocelot.json:
"Routes": [
{
"DownstreamScheme": "http",
"DownstreamHostAndPorts": [
{
"Host": "127.0.0.1",
"Port": 5100
}
],
"DownstreamPathTemplate": "/{url}",
"UpstreamPathTemplate": "/modules/{url}",
"UpstreamHttpMethod": [
"GET",
"POST",
"PUT",
"DELETE"
],
"ReRouteIsCaseSensitive": false,
"Priority": 0
}
],
"SwaggerEndPoints": [
{
"Key": "Modules",
"VersionPlaceholder": null,
"KeyToPath": "Modules",
"Config": [
{
"Name": "Modules API",
"Version": "v1",
"Url": "http://127.0.0.1:5100/v1/swagger.json",
"Service": null
}
],
"HostOverride": null,
"TransformByOcelotConfig": false
}
]
Конфигурация swagger за gateway:
private void AddSwagger(IServiceCollection services)
{
services.AddSwaggerGen(c => c.SwaggerDoc("v1", new OpenApiInfo { Title = "Modules", Version = "V1" }));
services.ConfigureSwaggerGen(options => { options.CustomSchemaIds(x => x.FullName); });
}
private void ConfigureSwagger(IApplicationBuilder app)
{
app
.UseSwagger()
.UseSwaggerUI(c => c.SwaggerEndpoint("v1/swagger.json", "Modules API"));
}
Конфигурация swagger в gateway:
services.AddSwaggerForOcelot(Configuration,o => { o.GenerateDocsForGatewayItSelf = true; });
services.AddControllers();
app.UseSwaggerForOcelotUI(opt =>
{
opt.DownstreamSwaggerHeaders = new[]
{
new KeyValuePair<string, string>("Accept", "application/json")
};
})
.UseOcelot().Wait();
