Swagger:从外部服务器获取 swagger.json 但使用本地服务器作为主机
Swagger: get swagger.json from external server but use the localserver as host
由于动态生成 swagger json 在本地大约需要 3 秒(由于 dotnet 中的反射),我尝试实现以下目标:
- 在 swagger-ui 中使用的 swagger.json 应该位于 CDN 服务器上,这样它就不会在运行时生成。它是在 build-time
期间通过 cli 生成的
- 当我使用 swagger-ui 进行调用时,base-url 当然不应该是这个 cdn 位置,而是一个相对位置
这是行不通的:
var cdnPath = https://linktomycdn.com/staticswaggerstore
app.UseSwagger(c => c.SerializeAsV2 = true);
string swaggerUrl = $"{cdnPath}/swagger-{Version}.json";
app.UseSwaggerUI(options =>
{
options.SwaggerEndpoint(swaggerUrl, $"My API v{Version}");
options.OAuthClientId($"{config.ClientAuthConfig.JwtClientId}");
options.OAuthAppName($"{config.ClientAuthConfig.JwtClientApp}");
});
发生的事情是服务器正确加载了 json 文件(我使用 swagger-cli 工具创建的)但是当我尝试使用 swagger-ui [=20 进行调用时=]它使用 cdnpath 作为基础。 所以没有呼叫工作。
我可以“拆分”swagger.json 位置和实际端点吗?
我通过生成带有特定 --host 标志的 json 文件使它工作
例如
dotnet swagger tofile --serializeasv2 --host mycoolapi.com --output .swagger-1.0.0.json /app/MyDll.dll v1.0.0
所以现在我的 API 正在使用 https://mycoolapi.com as host but the json sits on my CDN https://linktomycdn.com/staticswaggerstore。这在 C# 代码中配置为 SwaggerEndpoint
确保不在 --host 参数中提供架构 (https)
由于动态生成 swagger json 在本地大约需要 3 秒(由于 dotnet 中的反射),我尝试实现以下目标:
- 在 swagger-ui 中使用的 swagger.json 应该位于 CDN 服务器上,这样它就不会在运行时生成。它是在 build-time 期间通过 cli 生成的
- 当我使用 swagger-ui 进行调用时,base-url 当然不应该是这个 cdn 位置,而是一个相对位置
这是行不通的:
var cdnPath = https://linktomycdn.com/staticswaggerstore
app.UseSwagger(c => c.SerializeAsV2 = true);
string swaggerUrl = $"{cdnPath}/swagger-{Version}.json";
app.UseSwaggerUI(options =>
{
options.SwaggerEndpoint(swaggerUrl, $"My API v{Version}");
options.OAuthClientId($"{config.ClientAuthConfig.JwtClientId}");
options.OAuthAppName($"{config.ClientAuthConfig.JwtClientApp}");
});
发生的事情是服务器正确加载了 json 文件(我使用 swagger-cli 工具创建的)但是当我尝试使用 swagger-ui [=20 进行调用时=]它使用 cdnpath 作为基础。 所以没有呼叫工作。
我可以“拆分”swagger.json 位置和实际端点吗?
我通过生成带有特定 --host 标志的 json 文件使它工作
例如
dotnet swagger tofile --serializeasv2 --host mycoolapi.com --output .swagger-1.0.0.json /app/MyDll.dll v1.0.0
所以现在我的 API 正在使用 https://mycoolapi.com as host but the json sits on my CDN https://linktomycdn.com/staticswaggerstore。这在 C# 代码中配置为 SwaggerEndpoint
确保不在 --host 参数中提供架构 (https)