首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSwag和多个api版本

NSwag和多个api版本
EN

Stack Overflow用户
提问于 2020-06-10 08:45:23
回答 1查看 2.3K关注 0票数 3

请考虑下列控制人员:

代码语言:javascript
复制
namespace Web.Controllers
{
    [ApiVersioning("1.0")
    [Route("api/v{version:apiVersion}/[controller]")]
    public class Product : ApiController
    {
        [HttpGet("id")]
        public IHttpActionResult<bool> GetProduct(Guid id) 
        { /* rest of the code */ }
    }
}

namespace Web.Controllers
{
    [ApiVersioning("2.0")
    [Route("api/v{version:apiVersion}/[controller]")]
    public class Product2 : ApiController
    {
        [HttpGet("id")]
        public IHttpActionResult<bool> GetProduct(Guid id) 
        { /* rest of the code */ }
    }
}

以及Startup类中的Swagger文档:

代码语言:javascript
复制
services.AddSwaggerDocument(config =>
{
    config.DocumentName = "v1.0";
    config.PostProcess = document =>
    {
        document.Info.Version = "v1.0";
    };
});

services.AddSwaggerDocument(config =>
{
    config.DocumentName = "v2.0";
    config.PostProcess = document =>
    {
        document.Info.Version = "v2.0";
    };
});

现在,在用NSwag测试API浏览器之后,它忽略了版本,并显示了v1和v2文档中的所有API。

如何让NSwag将它们分开?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-10 09:32:02

我认为您缺少用于选择Api版本的ApiGroupNames属性。请添加类似于下面代码的ApiGroupNames属性并通知我们。

代码语言:javascript
复制
services.AddSwaggerDocument(config =>
{
    config.DocumentName = "v1.0";
    config.PostProcess = document =>
    {
        document.Info.Version = "v1.0";
    };
    config.ApiGroupNames = new[] { "1.0" };
});

services.AddSwaggerDocument(config =>
{
    config.DocumentName = "v2.0";
    config.PostProcess = document =>
    {
        document.Info.Version = "v2.0";
    };
    config.ApiGroupNames = new[] { "2.0" };
});
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62299388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档