重载Get-参数名称在功能上是否重要?

时间:2012-07-30 18:39:33

标签: c# rest parameters asp.net-web-api naming

当我使用以下代码时:

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返回200,主体为“12”。

但是只要我将代码更改为:

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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