我有一个带有http://foo.com/accounts/123/users/456网址的GET请求。对于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;
}
感谢您的帮助!!
答案 0 :(得分:0)
绝对。来自ASP.NET site:
默认情况下,Web API使用以下规则绑定参数:
如果参数是“简单”类型,Web API会尝试从URI中获取值。简单类型包括.NET基元类型 (int,bool,double等),加上TimeSpan,DateTime,Guid, 十进制和字符串,加上任何类型转换器都可以 从字符串转换。 (稍后将详细介绍类型转换器。)
对于复杂类型,Web API尝试使用媒体类型格式化程序从邮件正文中读取值。