Swashbuckle.AspNetCore - 有没有办法动态设置 swagger.json 的路径?
Swashbuckle.AspNetCore - Is there a way to set the path to swagger.json dynamically?
我需要在 Azure 应用程序网关后面的多个 url 处托管单个服务。
该服务将在 http://10.11.12.13:1234
内部托管,并且只有一个相同的实例。
这需要通过 public URL 这样的方式公开:
- foo.example.com/service1
- bar.example.com/service1 等
我们可以配置应用程序网关来重写传入的 url 以指向托管服务。类似于示例。com/service1 => 10.11.12.13:1234
问题是swagger文件的路径设置在Startup.cs:
options.SwaggerEndpoint("/swagger/api/swagger.json", "My API");
此时没有可用的 HttpRequest,所以我无法读取 headers 并进行适当的配置,这就是我们对 PreSerializeFilters
所做的,以便在返回的 swagger.json
.
当前,当用户导航到 https://foo.example.com/service1/swagger
时,swagger UI 将尝试从错误的位置 https://foo.example.com/swagger/api/swagger.json
下拉 swagger.json。
应该是从https://foo.example.com/service1/swagger/api/swagger.json
.
拉出来的
有什么类似于 PreSerializeFilters
的东西可以用来设置 swagger.json 本身的路径吗?
The problem is that the path to the swagger file is set in Startup.cs:
options.SwaggerEndpoint("/swagger/api/swagger.json", "My API");
设置相对 url 而不是绝对。
options.SwaggerEndpoint("swagger/api/swagger.json", "My API");
我需要在 Azure 应用程序网关后面的多个 url 处托管单个服务。
该服务将在 http://10.11.12.13:1234
内部托管,并且只有一个相同的实例。
这需要通过 public URL 这样的方式公开:
- foo.example.com/service1
- bar.example.com/service1 等
我们可以配置应用程序网关来重写传入的 url 以指向托管服务。类似于示例。com/service1 => 10.11.12.13:1234
问题是swagger文件的路径设置在Startup.cs:
options.SwaggerEndpoint("/swagger/api/swagger.json", "My API");
此时没有可用的 HttpRequest,所以我无法读取 headers 并进行适当的配置,这就是我们对 PreSerializeFilters
所做的,以便在返回的 swagger.json
.
当前,当用户导航到 https://foo.example.com/service1/swagger
时,swagger UI 将尝试从错误的位置 https://foo.example.com/swagger/api/swagger.json
下拉 swagger.json。
应该是从https://foo.example.com/service1/swagger/api/swagger.json
.
有什么类似于 PreSerializeFilters
的东西可以用来设置 swagger.json 本身的路径吗?
The problem is that the path to the swagger file is set in Startup.cs:
options.SwaggerEndpoint("/swagger/api/swagger.json", "My API");
设置相对 url 而不是绝对。
options.SwaggerEndpoint("swagger/api/swagger.json", "My API");