加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-routing – Web API路由和Web API帮助页面:如何避

发布时间:2020-12-16 07:20:07 所属栏目:asp.Net 来源:网络整理
导读:我正在使用不同的父母(例如这些)在我的 Web API Help Page中呈现的重复条目引用相同的方法: GET api/{apiVersion}/v1/Products – Gets all products … GET api/v1/Products – Gets all products … 我有一个Web API页面,其中包含一些这样的路由: config
我正在使用不同的父母(例如这些)在我的 Web API Help Page中呈现的重复条目引用相同的方法:

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 /产品肯定不起作用,所以我不确定这有什么问题.我错过了什么?)

看来真正的问题是Web API帮助页面正在不正确地读取路由,因为我认为v1和{apiVersion}不应该同时出现在同一个动作中.我在这里错过了什么?

解决方法

尝试使用属性路由,安装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",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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读