我有一个GET请求的URL是http://foo.com/accounts/123/users/456。对于API控制器,路由将是这样的:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/accounts/{accountid}/users/{userid}",
defaults: new { accountid = RouteParameter.Optional, userid = RouteParameter.Optional }
);
控制器将喜欢:
public string Get(string accountid, string userid)
{
....
}
所以,与其接收两个参数,还不如让控制器接收一个对象,该对象包含如下参数:
public string Get(Query query)
{
string accountid = query.AccountID;
string userid= query.UserID;
}
谢谢你的帮助!
当然。来自ASP。NET网站:
默认情况下,Web API使用以下规则绑定参数:
如果参数是"simple"类型,Web API将尝试从URI获取该值。简单类型包括。net基本类型(int, bool, double,等等),加上TimeSpan, DateTime, Guid,十进制和字符串,以及任何具有类型转换器的类型从字符串转换。(后面有更多关于类型转换器的信息)
对于复杂类型,Web API尝试使用媒体类型格式化器从消息体读取值。