【问题标题】:Web api with two get actions具有两个获取操作的 Web api
【发布时间】:2013-08-27 05:13:13
【问题描述】:

我有一个带有以下内容的测试控制器 -

        public string Get(int id)
        {
            return "hi from test " + id;
        }

        [HttpGet]
        public string Search(string text)
        {
            return "you searched for  " + text;
        }

我可以打电话

 - http://localhost:58635/api/Test/2
 - http://localhost:58635/api/Test?id=2
 - http://localhost:58635/api/Test/Search?text=textToSearcFor

但不是http://localhost:58635/api/Test/Search/textToSearcFor

我的路线和这个post中的路线一样

            config.Routes.MapHttpRoute(
                  name: "ApiById",
                  routeTemplate: "api/{controller}/{id}",
                  defaults: new { id = RouteParameter.Optional },
                  constraints: new { id = @"^[0-9]+$" }
              );

        config.Routes.MapHttpRoute(
            name: "ApiByName",
            routeTemplate: "api/{controller}/{action}/{name}",
            defaults: null
        );

        config.Routes.MapHttpRoute(
            name: "ApiByAction",
            routeTemplate: "api/{controller}/{action}",
            defaults: new { action = "Get" }
        );

我做错了什么?

【问题讨论】:

    标签: c# asp.net-web-api asp.net-mvc-routing asp.net-web-api-routing


    【解决方案1】:

    对于您的“ApiByName”路线,请尝试更改

    routeTemplate: "api/{controller}/{action}/{name}"
    

    routeTemplate: "api/{controller}/{action}/{text}",
    

    或者

    将搜索操作的参数名称“text”更改为“name”

    【讨论】:

    • 哎呀,反复拍脑袋!谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-02
    • 2018-03-14
    • 2021-07-20
    • 1970-01-01
    • 1970-01-01
    • 2018-09-04
    • 2017-04-30
    相关资源
    最近更新 更多