0

当我使用以下代码时:

public HttpResponseMessage Get()
{
    return Request.CreateResponse(HttpStatusCode.OK, "Empty!");
}

public HttpResponseMessage Get(int id)
{
    return Request.CreateResponse(HttpStatusCode.OK, id);
}

请求完全按照他们应该的方式工作。 GET: api/controller以“Empty!”GET: api/controller/12为主体返回,以“12”为主体返回 200。

但是,一旦我将代码更改为:

public HttpResponseMessage Get()
{
    return Request.CreateResponse(HttpStatusCode.OK, "Empty!");
}

public HttpResponseMessage Get(int itemId) //changed parameter name
{
    return Request.CreateResponse(HttpStatusCode.OK, itemId);
}

一切都达到默认方法并返回“空!”

我认为这是许多命名约定问题之一,但我找不到任何说明参数必须命名为特定值的文档或其他帖子。

这似乎是一个语义问题,但我想知道为什么我必须将我的参数命名为特定的东西,或者我做错了什么。为什么这不能简单地工作?

4

1 回答 1

0

约定是在 RouteConfig.cs 中的 Routing 表中定义的,如果更改参数名称,则应相应更改:

 routes.MapHttpRoute(
          name: "DefaultApi",
          routeTemplate: "api/{controller}/{itemId}",
          defaults: new { itemId = RouteParameter.Optional }
      );
于 2012-07-30T18:45:39.967 回答