【问题标题】:mvc api config not workingmvc api配置不起作用
【发布时间】:2014-03-18 11:48:34
【问题描述】:

我遇到了 api 配置和 Api 控制器的问题。我实现了很多方法,但它不起作用。问题是:

我的 Api 控制器:

 public class HomeValuesController : ApiController
    {
        public string GetFindID()
        {
            string NewID = "";
            CarrierDao DaoObj = new CarrierDao();
            NewID = DaoObj.FindID();
            return NewID;
        }

        public int Test()
        {
            int i = 10;
            return i;
        }
}

这里,我要方法了。

和我的 Api 配置文件:

config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );

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

现在,当我使用 url 时

http://websitedom.com/api/HomeValues/test

它将使用 GetFindID 方法而不是 test

我也在互联网上进行了一些搜索,但没有工作。请让我知道我在做什么错误。

【问题讨论】:

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


    【解决方案1】:

    您应用的概念是错误的。 API 控制器映射到 HTTP 动词而不是方法名称。这与 MVC 略有不同。

    您可以在发出请求时使用任何类型的动词,例如 GET、POST、PUSH 等,实际上这取决于请求。然后路由逻辑将选择以该动词为前缀的方法。它不会像你认为它必须做的那样匹配动作的名称。

    编辑:

    如果您希望为 API 方法使用自定义名称,那么您可以使用属性路由。 请查看此http://www.asp.net/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2 了解更多信息。请注意,属性路由在 WebAPI 2 或更高版本中可用。

    回答你的问题:

    [Route("api/home/test")]
    public int Test()
            {
                int i = 10;
                return i;
            }
    

    【讨论】:

    • ok..如果我想调用第二种方法“测试”。它也是Get。那我怎么打电话?
    • 重命名为post。并将请求类型设置为发布。那应该叫它。
    • 但我正在寻找 3 种获取方法而不是更改类型。
    • 对此的回复有点晚了。我希望您的问题得到解决,如果仍有待处理,您可以检查编辑。
    猜你喜欢
    • 2014-11-13
    • 2015-04-15
    • 2022-01-15
    • 2011-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-15
    • 1970-01-01
    相关资源
    最近更新 更多