gpt4 book ai didi

asp.net-mvc-routing - Web API 路由和 Web API 帮助页面 : how to avoid repeated entries

转载 作者:行者123 更新时间:2023-12-04 23:20:23 26 4
gpt4 key购买 nike

我的 Web API Help Page 中呈现重复条目与不同的 parent ,例如这些,指的是相同的方法:

GET api/{apiVersion}/v1/Products - Gets all products

...

GET api/v1/Products - Gets all products

...


我有一个带有一些路由的 Web API 页面,如下所示:
       config.Routes.MapHttpRoute (
name: "DefaultVersionApi",
routeTemplate: "api/{apiVersion}/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);

config.Routes.MapHttpRoute (
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
我原以为这种路由会使“v1”成为可选的,因此不需要上面的派生文档。
(侧边栏:转到 api/products 当然不起作用,所以我不确定这有什么问题。我错过了什么?)
似乎真正的问题是 Web API 帮助页面没有正确读取路由,正如我所想的 v1{apiVersion} 不应同时出现在同一 Action 中 . 我在这里缺少什么?

最佳答案

尝试使用属性路由,安装 nuget 包

Install-Package Microsoft.AspNet.WebApi.WebHost
在 WebApiConfig.cs 中启用属性路由
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Attribute routing.
config.MapHttpAttributeRoutes();

// Convention-based routing.
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
然后在 Controller 的方法中使用属性 Route
[Route("~/api/v1/Products")]
[HttpGet]
public List<Product> Products()
{}

[Route("~/api/v2/Products")]
[HttpGet]
public List<Product> V2Products()
{}
在文档中你会得到

GET api/v1/Products - Gets all products

GET api/v2/Products - Gets all products

关于asp.net-mvc-routing - Web API 路由和 Web API 帮助页面 : how to avoid repeated entries,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28730307/

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