首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我不能用ApiVersioning .net Core在响应头中显示API版本

我不能用ApiVersioning .net Core在响应头中显示API版本
EN

Stack Overflow用户
提问于 2020-03-31 11:41:36
回答 2查看 528关注 0票数 1

我按照基于ASP.NET内核的REST版本控制指令在响应头中显示我的API版本。

这是我的配置代码

代码语言:javascript
运行
复制
 public void ConfigureServices(IServiceCollection services)
    {
        services.AddControllers();
        services.AddMvc().AddNewtonsoftJson();
        services.AddMvc(opt =>
        {

        services.AddRouting(env => env.LowercaseUrls = true);
        services.AddApiVersioning(opt => {
            opt.ApiVersionReader = new MediaTypeApiVersionReader();
            opt.AssumeDefaultVersionWhenUnspecified = true;
            opt.ReportApiVersions = true;
            opt.DefaultApiVersion = new ApiVersion(1, 0);
            opt.ApiVersionSelector = new CurrentImplementationApiVersionSelector(opt);
        });
    }

这是我的控制器

代码语言:javascript
运行
复制
[Route("/")]
[ApiVersion("1.0")]
public class RootController:Controller
{
    [HttpGet(Name =nameof(GetRoot))]
    public IActionResult GetRoot()
    {
        var response = new { href = Url.Link(nameof(GetRoot),null) };
        return Ok(response);
    }
}

当我用postman测试我的API时,我得到了以下结果:

我不知道为什么opt.ReportApiVersions = true;不工作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-28 22:11:26

这样做的原因是为了从UI控制器中消除API控制器的歧义。在ASP.NET核心中,实际上没有任何其他内置的方法可以这样做,因为控制器就是控制器。

还有其他几种方法可以改变这种行为:

  • 选择退出options.UseApiBehavior = false,就像[ApiController]之前的情况一样
  • 添加一个自定义IApiControllerSpecification来标识API控制器(有一个内置实现可以理解[ApiController])
  • 替换默认的IApiControllerFilter服务,它实际上只是对所有已注册的IApiControllerSpecification实现的聚合。

我希望这能帮上忙

票数 2
EN

Stack Overflow用户

发布于 2020-03-31 12:00:17

我找到了解决办法。我必须在我的控制器中添加[ApiController]

代码语言:javascript
运行
复制
[Route("/")]
[ApiVersion("1.0")]
[ApiController]
public class RootController:Controller
{
    [HttpGet(Name =nameof(GetRoot))]
    public IActionResult GetRoot()
    {
        var response = new { href = Url.Link(nameof(GetRoot),null) };
        return Ok(response);
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60949746

复制
相关文章

相似问题

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