我有点困惑。我有一个控制器(来自ApiController),具有以下方法:
[ActionName("getusername")]
public string GetUserName(string name)
{
return "TestUser";
}
我的路由设置如下:
config.Routes.MapHttpRoute(
name: "ActionApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
当我尝试用小提琴手中的GET击
/api/mycontroller/getusername/test
时,我一直收到400错误。我发现将
[FromBody]
添加到GetUserName中的name参数时一切正常。我以某种方式认为
[FromBody]
用于HttpPost
,表示该参数在帖子的正文中,因此GET
不需要该参数。看来我错了。这是如何运作的?
最佳答案
您需要将路由更改为:
config.Routes.MapHttpRoute(
name: "ActionApi",
routeTemplate: "api/{controller}/{action}/{name}",
defaults: new { name = RouteParameter.Optional }
);
或将参数名称更改为:
[ActionName("getusername")]
public string GetUserName(string id)
{
return "TestUser";
}
注意:其他路由参数必须与方法参数名称匹配。