0
我在使用windows' tutorial的Web API项目中获取json
文件时没有问题。使用Swashbuckle生成yaml swagger
由于某些要求,我希望能够检索yaml
文件。但问题是我没有找到能够实现这一目标的机会。
有没有人知道任何解决方法这个问题?
我在使用windows' tutorial的Web API项目中获取json
文件时没有问题。使用Swashbuckle生成yaml swagger
由于某些要求,我希望能够检索yaml
文件。但问题是我没有找到能够实现这一目标的机会。
有没有人知道任何解决方法这个问题?
的选择将是一个IDocumentFilter添加到您的项目,这里有几个样本:
private class YamlDocumentFilter : IDocumentFilter
{
public void Apply(SwaggerDocument swaggerDoc, SchemaRegistry schemaRegistry, IApiExplorer apiExplorer)
{
string file = AppDomain.CurrentDomain.BaseDirectory + "swagger_yaml.txt";
if (!File.Exists(file))
{
var serializer = new YamlSerializer();
serializer.SerializeToFile(file, swaggerDoc);
}
}
}
...
private class YamlDocumentFilter : IDocumentFilter
{
public void Apply(SwaggerDocument swaggerDoc, SchemaRegistry schemaRegistry, IApiExplorer apiExplorer)
{
string file = AppDomain.CurrentDomain.BaseDirectory + "swagger.yaml";
if (!File.Exists(file))
{
var serializer = new YamlDotNet.Serialization.Serializer();
using (var writer = new StringWriter())
{
serializer.Serialize(writer, swaggerDoc);
var stream = new StreamWriter(file);
stream.WriteLine(writer.ToString());
}
}
}
}
但如果加上取决于你的项目对YamlSerializer或YamlDotNet的附加参考是可以接受的。
这似乎是正确的路要走,我还没有能够验证它。但这可能是因为我正在部署到服务结构。 – Manny42
arghhh! (***服务结构***)是的,你可能需要修改该例子或尝试不同的依赖... – HelderSepu
我添加了一个使用YamlSerializer的示例,代码看起来更简单,我验证了它它适用于Azure:http://swashbuckletest.azurewebsites.net/swagger_yaml.txt – HelderSepu