我使用NSwag在ASP.Net Core2.1项目中生成swagger文档,该项目包含Web控制器、MVC控制器和Razor页面。NSwag抱怨了很多类似的事情,虽然它们在ASP.NET中是有效的。问题:如何在Swagger/NSwag中文件化,只包含一个特定的名称空间(MyProject.Api)或路径(/api/)?
path '/api/XXX/Create‘上的“Post”方法多次注册
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);
}发布于 2019-02-21 10:10:25
如果只想排除一个操作方法,请将属性[ApiExplorerSettings(IgnoreApi = true)]放在上面。
您也可以将它放在整个控制器类上。
对于整个项目的批量操作,可以使用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中编写代码,只包含某些控制器,或者排除名称空间等。
https://stackoverflow.com/questions/52337355
复制相似问题