Api 使用Swashback V5从代码生成swagger.json
我使用的是Swashback AspNetCore v4.x.x,升级到v5.1.x.x。但是我在中使用的代码不再工作了,因为缺少类“SwaggerContractResolver” 我尝试的目标是在RESTfull API的代码中生成swagger.json:Api 使用Swashback V5从代码生成swagger.json,api,asp.net-core,swagger,swashbuckle,swashbuckle.aspnetcore,Api,Asp.net Core,Swagger,Swashbuckle,Swashbuckle.aspnetcore,我使用的是Swashback AspNetCore v4.x.x,升级到v5.1.x.x。但是我在中使用的代码不再工作了,因为缺少类“SwaggerContractResolver” 我尝试的目标是在RESTfull API的代码中生成swagger.json: publicstaticstringgenerateswagger(此iWebHostWebHost、stringdocName、stringbasePath) { var sw=(ISwaggerProvider)webhost.Se
publicstaticstringgenerateswagger(此iWebHostWebHost、stringdocName、stringbasePath)
{
var sw=(ISwaggerProvider)webhost.Services.GetService(typeof(ISwaggerProvider));
var doc=sw.GetSwagger(docName,null,basePath);
var json=JsonConvert.SerializeObject(
博士,
格式。缩进,
新JsonSerializerSettings
{
NullValueHandling=NullValueHandling.Ignore,
ContractResolver=新的Swagger ContractResolver(新的JsonSerializerSettings())
}
);
返回json;
}
string json=GenerateSwagger(webhost、docName、url);
字符串路径=path.Combine(路径,docName);
File.writealText(路径+“.json”,json);
如何才能像v4一样工作,但使用新版本的Swashback AspnetCore?对于Swashback V5,您可以使用.NET Core CLI生成swagger合约: 但这只适用于.NET核心API。对于.NET Framework,您可以使用以下方法:
publicstaticstringgenerateswagger(此iWebHostWebHost、stringdocName、stringbasePath)
{
var sw=webhost.Services.GetRequiredService();
var doc=sw.GetSwagger(docName,null,basePath);
使用(var streamWriter=new StringWriter())
{
var writer=newopenapijsonwriter(streamWriter);
文件序列化ASV3(编写器);
返回streamWriter.ToString();
}
}
如果您想要YAML swagger合同,可以将OpenApiJsonWriter
切换到OpenApiYamlWriter
如果您想要V2大摇大摆的合同,可以将SerializeAsV3
切换到SerializeAsV2