sdc и catalog, есть nginx примерно с таким конфигом:
events {}
http {
server {
server_name http://localhost;
location /catalog/ {
proxy_pass http://app1:80/;
}
location /sdc/ {
proxy_pass http://app2:80/;
}
}
}
Настройка сваггера:
app.UseSwagger();
app.UseSwaggerUI(
options =>
{
foreach ( var description in provider.ApiVersionDescriptions )
{
options.SwaggerEndpoint( $"../swagger/{description.GroupName}/swagger.json", description.GroupName.ToUpperInvariant() );
}
} );
Запускаю через docker-compose два сервиса и nginx, все ок. Иду по пути http://localhost/catalog/swagger/ - открывается сваггер, все ок. Пытаюсь дернуть метод контроллера, получаю 404, потому что теряю часть пути - в контроллерах путь указан, например, вот так:
[Route("catalog/{version:apiVersion}/[controller]")]
Итого, у меня должно быть catalog два раза - один раз из-за нджинкса, второй раз из-за пути в контроллере.
Т.е. если я запрошу localhost/catalog/catalog/1/Fhir/Questionnaire - все норм. А через сваггер запрос получается на localhost/catalog/1/Fhir/Questionnaire - поэтому 404.
Пробовал путь указывать так
options.SwaggerEndpoint( $"{description.GroupName}/swagger.json", description.GroupName.ToUpperInvariant() );
не помогло. Ну ваще кучу всего пробовал, как-то не особо.
Мб кто-то сталкивался?
Нужна кастомная конфигурация сваггера. Гугли: swagger .net core OpenApiServers
тебе сюда: https://github.com/domaindrivendev/Swashbuckle.AspNetCore#modify-swagger-with-request-context
Обсуждают сегодня