当我使用以下代码时:
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!”
我认为这是许多命名约定事项之一,但我找不到任何文档或其他帖子说参数必须命名为特定值。
这似乎是一个语义问题,但我想知道为什么我必须将参数命名为特定的东西,或者我做错了什么。为什么不能简单地运作呢?
答案 0 :(得分:0)
约定在RouteConfig.cs中的Routing表中定义,如果更改参数名称,则应相应更改:
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{itemId}",
defaults: new { itemId = RouteParameter.Optional }
);