使用常规路由时没有大摇大摆的操作
No operations in swagger when using conventional routing
我的目标是 .NET Core 2.1,我不想使用 Route
属性,而是使用默认路由(所谓的常规路由)。这是我的 Startup
代码:
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "API V1", Version = "v1" });
});
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseSwagger();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "api/{controller}/{action}");
});
}
}
控制器简单:
public class ValuesController : ControllerBase
{
[HttpGet]
public ActionResult<IEnumerable<string>> Get()
{
return new[] { "value1", "value2" };
}
}
我可以转到 https://myurl/api/values/get
并且它有效(returns 一个数组)。但是,当我打开 swagger.json
时,没有定义任何操作:
{
"openapi": "3.0.1",
"info": {
"title": "API V1",
"version": "v1"
},
"paths": { },
"components": { }
}
如何让swagger识别常规路由?我正在使用 Swashbuckle 5.5.1 生成 swagger。
有人告诉我,API Explorer(Swashbackle 的基础)不支持常规路由。
我的解决方案是使用 chsakell 的 Swashbuckle.AspNetCore.SwaggerGen.ConventionalRouting 包。
我的目标是 .NET Core 2.1,我不想使用 Route
属性,而是使用默认路由(所谓的常规路由)。这是我的 Startup
代码:
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "API V1", Version = "v1" });
});
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseSwagger();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "api/{controller}/{action}");
});
}
}
控制器简单:
public class ValuesController : ControllerBase
{
[HttpGet]
public ActionResult<IEnumerable<string>> Get()
{
return new[] { "value1", "value2" };
}
}
我可以转到 https://myurl/api/values/get
并且它有效(returns 一个数组)。但是,当我打开 swagger.json
时,没有定义任何操作:
{
"openapi": "3.0.1",
"info": {
"title": "API V1",
"version": "v1"
},
"paths": { },
"components": { }
}
如何让swagger识别常规路由?我正在使用 Swashbuckle 5.5.1 生成 swagger。
有人告诉我,API Explorer(Swashbackle 的基础)不支持常规路由。
我的解决方案是使用 chsakell 的 Swashbuckle.AspNetCore.SwaggerGen.ConventionalRouting 包。