我使用的是Swashbuckle AspNetCore v4.x.x,我升级到了v5.1.x.x。但是我使用的代码不再工作了,因为缺少类“SwaggerContractResolver”。
我尝试的目标是在RESTfull API的代码中生成swagger.json:
public static string GenerateSwagger(this IWebHost webhost, string docName, string basePath)
{
var sw = (ISwaggerProvider)webhost.Services.GetService(typeof(ISwaggerProvider));
var doc = sw.GetSwagger(docName, null, basePath);
var json = JsonConvert.SerializeObject(
doc,
Formatting.Indented,
new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore,
ContractResolver = new SwaggerContractResolver(new JsonSerializerSettings())
}
);
return json;
}
string json = GenerateSwagger(webhost, docName, url);
string path = Path.Combine(path, docName);
File.WriteAllText(path + ".json", json);
我怎么能像v4一样工作,但使用新版本的Swashbuckle AspnetCore?
2条答案
按热度按时间mrfwxfqh1#
使用Swashbuckle V5,您可以使用.NET Core CLI来生成swagger合约:
https://github.com/domaindrivendev/Swashbuckle.AspNetCore#swashbuckleaspnetcorecli
但这只适用于.NET Core API。对于.NET Framework,您可以使用此方法:
如果你想要YAML swagger合约,你可以将
OpenApiJsonWriter
切换到OpenApiYamlWriter
。如果你想要V2 swagger合约,你可以将
SerializeAsV3
切换到SerializeAsV2
。koaltpgm2#
对于Swashbuckle V5和更新版本,您可以使用以下扩展方法。
几个音符
SerializeAsYaml
而不是SerializeAsJson
如果你想要.yml文件Microsoft.OpenApi.OpenApiSpecVersion
枚举指定OpenAPI协议的版本如果您使用的是新的ASP.NETCore模板,则可以像这样调用此方法