如何编写一个Web API路由映射,使它允许我使参数可选
本文关键字:映射 允许我 参数 路由 API 何编写 Web 一个 | 更新日期: 2023-09-27 18:07:07
我有一个Web API服务如下:
[HttpGet]
public UserProfile SearchByEmail(string siteName, string providerName, string email)
{}
我想让providerName是可选的,下面的url应该工作:
{0}: http://www.domain.com/sites/siteName1/providerName1/User/SearchByEmail?email=email1
{1}: http://www.domain.com/sites/siteName1/User/SearchByEmail?email=email1
我写了下面的映射:
config.Routes.MapHttpRoute(
name: "SearchUserByEmail",
routeTemplate: "sites/{siteName}/{providerName}/User/SearchByEmail",
defaults: new
{
controller = "User",
action = "SearchByEmail",
providerName = UrlParameter.Optional
});
,但它只支持{0}url,不支持{1}url。
如何编写映射,使它允许我使providerName可选?
只有url片段的最后一个令牌是可选的。如果你想让它工作,你必须将你的路由模式更改为:sites/{siteName}/User/SearchByEmail/{providerName}
。如果参数是可选的,我的建议是在查询字符串中传递它。