gpt4 book ai didi

asp.net-web-api - 需要 API 版本,但未指定。网络API

转载 作者:行者123 更新时间:2023-12-02 14:44:39 27 4
gpt4 key购买 nike

var constraintResolver = new DefaultInlineConstraintResolver()
{
ConstraintMap =
{
["apiVersion"] = typeof( ApiVersionRouteConstraint )
}
};

config.MapHttpAttributeRoutes(constraintResolver);
config.AddApiVersioning(o => o.AssumeDefaultVersionWhenUnspecified = true);


[ApiVersion("2.05")]
[RoutePrefix("api/v{version:apiVersion}/ger")]
public class caGerController
[Route("~/api/ger/getDetail")]
[Route("getDetail")]
GetGerData


[ApiVersion("1")]
[RoutePrefix("api/v{version:apiVersion}/gerDetail")]

public class caGerDetailsController
caGerController
[Route("~/api/gerDetail/getDetail")]
[Route("getDetail")]
GetGerData

>> GetGerData

结果:

  1. 两个 URL 均适用于 v1 版本 ROUTE。

  2. 第二个 URL 适用于 v1 和直接,无需 v1 路由,即 [Route("~/api/gerDetail/getDetail")]

  3. 问题:第一个 URL 仅适用于 v1,并且不适用于像“[Route("~/api/ger/getDetail")]”这样的直接路由并收到如下错误:

    “错误”:{"Code": "ApiVersionUnspecified","Message": "需要 API 版本,但未指定。"}

如何解决这个问题?当我从 2.05 更改为 1.0 时,它可以工作,但 2.0 或 2.05 都不起作用。是否需要单独的文件夹?

最佳答案

发生ApiVersionUnspecified是因为默认情况下所有路由都需要显式API版本。您可以使用以下方式选择退出此行为:

options.AssumeDefaultVersionWhenUnspecified = true

此设置意味着当客户端未提供默认 API 版本时,将采用默认 API 版本。默认值为:

options.DefaultApiVersion // equals 1.0 by default

当您使用 URL 段版本控制方法时,您不能拥有两个不同的 Controller ,并且这两个 Controller 都未版本化路由。没有API版本的路由只能映射到单个 Controller 。由于默认值为“1.0”,并且您有一个具有无版本路由的 Controller ,因此它将始终匹配。

关于asp.net-web-api - 需要 API 版本,但未指定。网络API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49415655/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com