我有一个带有 API 端点的 ASP.NET 完整框架应用程序。我正在使用 NSwag 生成一个招摇的文档。这一切都有效。
我只需要为一小部分端点生成一个文档。路径被过滤,但模式不是。如何过滤架构对象以匹配路径过滤?
示例:我有这个过滤器
public class IncludeControllersInSwagger : IOperationProcessor
{
public Task<bool> ProcessAsync(OperationProcessorContext context)
{
return Task.FromResult(
context.ControllerType == typeof(ControllerA));
}
}
这在启动时:
settings.GeneratorSettings.OperationProcessors.Add(new IncludeControllersInSwagger());
控制器是:
public class AResponse
{
public string Message { get; set; }
public bool Flag { get; set; }
}
public class BResponse
{
public string Message { get; set; }
public int Count { get; set; }
}
[Route("a")]
public class ControllerA : ApiController
{
[HttpGet]
public AResponse Get()
{
return new AResponse
{
Message = "Hello from A",
Flag = true
};
}
}
[Route("b")]
public class ControllerB : ApiController
{
[HttpGet]
public BResponse Get()
{
return new BResponse
{
Message = "Hello from B",
Count = 42
};
}
}
然后生成的招摇只包含一个路径:
"paths": {
"/a": {
"get": { .. etc
}
}
仅此而已,这是正确的。
但模式包含两者:
"schemas": {
"AResponse": {
"type": "object",
"additionalProperties": false,
etc
},
"BResponse": {
"type": "object",
"additionalProperties": false,
etc
}
}
}
BResponse
类型不应该在那里。你如何删除它?
在有超过 10 个端点的情况下,这些额外的数据使得 Schemas 部分非常冗长且不适合公共文档,并且只有 2 个通过网关公开并因此以招摇方式记录。
有一个ISchemaProcessor
,但它不会像IOperationProcessor
.