我有一个带有API端点的ASP.NET完整框架应用程序。我正在使用NSwag生成一张大笔的文档。全部都可以。
我只需要为端点的一小部分生成一个文档。路径被过滤,但架构未被过滤。如何过滤架构对象以匹配路径过滤?
示例: 我有这个过滤器
df['A'] = df.A.fillna(df.B).fillna(df.D)
A B C D
0 2.0 2.0 NaN 0
1 3.0 4.0 NaN 1
2 5.0 NaN NaN 5
3 3.0 3.0 NaN 4
启动时是这样的:
fillna
控制器为:
combine_first
然后生成的摇摇晃晃只包含一条路径:
df['A'] = df.A.fillna(df.B.combine_first(df.D))
仅此而已,
但是模式包含以下两者:
INSERT INTO updateuser (user_number) SELECT basicuser.user_num from basicuser
WHERE `user_num` != '0' ORDER BY `s_no` ASC
color <- brewer.pal(6,"Spectral")
overlap <- read_excel("overlap.xlsx")
par(mar=c(3,3,1,1),mgp=c(2,0.9,0),xaxs="i", yaxs="i")
overlap.dat <- overlap[overlap$`Countries and areas`=="Pakistan",]
overlap.dat <-as.data.frame(t(overlap.dat))
overlap.dat <- as.matrix(overlap.dat, drop=FALSE)
overlap.dat <- as.matrix(overlap.dat[-c(1:8,14),], drop=FALSE)
colnames(overlap.dat)= overlap[overlap$`Countries and areas`=="Pakistan",]$Year
barplot(overlap.dat, main = "Pakistan", col =color, ylim=c(0,100), xlim=c(0,8),cex.names=0.8, names.arg = colnames(overlap.dat),
legend=TRUE, args.legend = list(x="topright",y=100, cex=0.8,bty="n"), las=2 )
类型不应该存在。如何删除它?
如果有10个以上的终结点,并且只有2个通过网关公开,并且以大张旗鼓的形式记录,那么这些额外的数据使“模式”部分变得非常冗长,不适合公共文档。
有一个 public class IncludeControllersInSwagger : IOperationProcessor
{
public Task<bool> ProcessAsync(OperationProcessorContext context)
{
return Task.FromResult(
context.ControllerType == typeof(ControllerA));
}
}
,但没有返回settings.GeneratorSettings.OperationProcessors.Add(new IncludeControllersInSwagger());
之类的布尔值。
答案 0 :(得分:1)
您是否尝试过将操作过滤器添加为第一个元素?
即OperationProcessors.Insert(0, new IncludeControllersInSwagger())
我认为这很重要,因为它将在生成dto模式并将其添加到文档之前过滤掉该操作。
答案 1 :(得分:1)
这不是您问题的答案,因为您已经获得了似乎可行的答案。我确实有一个建议。建议您创建一个自定义属性,而不是检查处理器中控制器的类型:
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class)]
public class IncludeInSwaggerAttribute : Attribute
{
}
然后更改处理器以查找此属性:
public class IncludeInSwaggerOperationProcessor : IOperationProcessor
{
public async Task<bool> ProcessAsync(OperationProcessorContext context)
{
return context.ControllerType.GetCustomAttributes<IncludeInSwaggerAttribute>().Any() ||
context.MethodInfo.GetCustomAttributes<IncludeInSwaggerAttribute>().Any();
}
}
通过这种方式,您可以将属性添加到要包括在扩展中的任何新控制器,而无需更改处理器。您还可以在单个操作上添加该属性,以仅包括该操作,而使控制器中的其余操作不再摇摇欲坠。