【问题标题】:No operations in swagger when using conventional routing使用常规路由时没有大张旗鼓的操作
【发布时间】:2020-07-02 08:11:05
【问题描述】:

我的目标是 .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,它可以工作(返回一个数组)。但是,当我打开 swagger.json 时,没有定义任何操作:

{
  "openapi": "3.0.1",
  "info": {
    "title": "API V1",
    "version": "v1"
  },
  "paths": { },
  "components": { }
}

我怎样才能大摇大摆地识别常规路由?我正在使用 Swashbuckle 5.5.1 来生成招摇。

【问题讨论】:

    标签: routes swagger swashbuckle.aspnetcore


    【解决方案1】:

    据我所知,API Explorer 不支持传统路由(这是 Swashbackle 的基础)。

    我的解决方案是使用 chsakell 的 Swashbuckle.AspNetCore.SwaggerGen.ConventionalRouting 包。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-13
      • 1970-01-01
      • 1970-01-01
      • 2019-06-30
      • 1970-01-01
      • 2022-08-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多