【发布时间】:2022-12-13 05:08:23
【问题描述】:
我有一个从向导创建的 asp.net 核心 web api - 它生成的代码如下:
public static void Main(string[] args)
{
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddAuthorization();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
...
如果我运行它,我会得到一个 swagger url,然后我可以去
https://localhost:7100/swagger/v1/swagger.yaml
并获得一个 yaml 文件......这一切都很好。
问题
但是,由于各种原因,我在 CI/CD 过程中需要那个 yaml 文件,所以我想在构建后动态获取它,但是启动 Web 服务器、调用它和将其关闭有很多方法可能出错。我想做的只是制作一个命令行选项来获取永远不会在 http 上侦听的 swagger 文件。所以我可以运行“dotnet run myApi generate_swagger_yaml >swagger.yaml”,比如:
public static void Main(string[] args)
{
if (args[0] == "generate_swagger_yaml")
{
var yamlFile = ....somehow get the swagger yaml file...
Console.Writeline( yamlfile );
return 0;
}
...
但我不知道该怎么做。
【问题讨论】:
标签: c# asp.net-core swagger openapi swashbuckle.aspnetcore