C# 重载Get参数名在功能上很重要吗?
当我使用以下代码时:C# 重载Get参数名在功能上很重要吗?,c#,rest,parameters,asp.net-web-api,naming,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返回
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);
}
所有内容都会命中默认方法并返回“Empty!”
我假设这是许多命名约定中的一个,但我找不到任何文档或其他帖子说参数必须命名为特定值
这似乎是一个语义问题,但我想知道为什么我必须为参数命名特定的东西,或者我做错了什么。为什么不能简单地执行此操作?约定是在RouteConfig.cs中的路由表上定义的,如果更改参数名称,则应相应地更改:
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{itemId}",
defaults: new { itemId = RouteParameter.Optional }
);
好的。那是一个愚蠢的疏忽。谢谢