NSwag 过滤器命名空间
NSwag filter namespace
我正在使用 NSwag 在 ASP.Net Core 2.1 项目中生成 swagger api 文档,该项目混合了 Web-API 控制器、MVC 控制器和 Razor Pages。 NSwag 抱怨很多类似以下内容,而它们在 ASP.NET 中有效。问题:如何在 Swagger/NSwag 文件管理器中仅包含特定的命名空间 (MyProject.Api) 或路径 (/api/)?
The method 'Post' on path '/api/XXX/Create' is registered multiple times
public ActionResult Create()
{
var doctor = new Doctor();
doctor.create_dt = DateTime.Now;
return View(doctor);
}
//
[HttpPost]
public ActionResult Create(Doctor doctor)
{
if (ModelState.IsValid)
{
theDB.Doctor.Add(doctor);
theDB.SaveChanges();
return RedirectToAction("Index");
}
return View(doctor);
}
如果您只想排除一种操作方法,请将属性 [ApiExplorerSettings(IgnoreApi = true)]
放在上面。
你也可以把它放在整个控制器上 class。
对于整个项目的批量操作,您可以使用 IOperationProcessor
,像这样
public class IncludeControllersInSwagger : IOperationProcessor
{
public Task<bool> ProcessAsync(OperationProcessorContext context)
{
bool controllerIsIncluded = TakeADecisionBasedOn(context.ControllerType);
return Task.FromResult(controllerIsIncluded);
}
}
然后在启动时用
连接它
RouteTable.Routes.MapOwinPath("swagger", app =>
{
app.UseSwagger(typeof(WebApiApplication).Assembly, settings =>
{
// the usual config, then:
settings.GeneratorSettings.OperationProcessors.Insert(0,
new IncludeControllersInSwagger());
});
});
您可以在 TakeADecisionBasedOn
中编写代码以仅包含某些控制器,或排除命名空间等
我正在使用 NSwag 在 ASP.Net Core 2.1 项目中生成 swagger api 文档,该项目混合了 Web-API 控制器、MVC 控制器和 Razor Pages。 NSwag 抱怨很多类似以下内容,而它们在 ASP.NET 中有效。问题:如何在 Swagger/NSwag 文件管理器中仅包含特定的命名空间 (MyProject.Api) 或路径 (/api/)?
The method 'Post' on path '/api/XXX/Create' is registered multiple times
public ActionResult Create()
{
var doctor = new Doctor();
doctor.create_dt = DateTime.Now;
return View(doctor);
}
//
[HttpPost]
public ActionResult Create(Doctor doctor)
{
if (ModelState.IsValid)
{
theDB.Doctor.Add(doctor);
theDB.SaveChanges();
return RedirectToAction("Index");
}
return View(doctor);
}
如果您只想排除一种操作方法,请将属性 [ApiExplorerSettings(IgnoreApi = true)]
放在上面。
你也可以把它放在整个控制器上 class。
对于整个项目的批量操作,您可以使用 IOperationProcessor
,像这样
public class IncludeControllersInSwagger : IOperationProcessor
{
public Task<bool> ProcessAsync(OperationProcessorContext context)
{
bool controllerIsIncluded = TakeADecisionBasedOn(context.ControllerType);
return Task.FromResult(controllerIsIncluded);
}
}
然后在启动时用
连接它 RouteTable.Routes.MapOwinPath("swagger", app =>
{
app.UseSwagger(typeof(WebApiApplication).Assembly, settings =>
{
// the usual config, then:
settings.GeneratorSettings.OperationProcessors.Insert(0,
new IncludeControllersInSwagger());
});
});
您可以在 TakeADecisionBasedOn
中编写代码以仅包含某些控制器,或排除命名空间等