如何编写一个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可选?

如何编写一个Web API路由映射,使它允许我使参数可选

只有url片段的最后一个令牌是可选的。如果你想让它工作,你必须将你的路由模式更改为:sites/{siteName}/User/SearchByEmail/{providerName}。如果参数是可选的,我的建议是在查询字符串中传递它。