Вы можете установить значения по умолчанию для intend и email равными null, как показано ниже:
[OperationContract]
[WebGet(UriTemplate = "LoginUser/authorizationCode/{authorizationCode}/userId/{userId}/intend/{intend=null}/{email=null}")]
string LoginUser(string authorizationCode, string userId, string intend, string email);
Мы можем получить доступ к этой услуге через URI ниже:
http://localhost: 8000 / LoginUser / authorizationCode / Test / userId / Test / intend /
http://localhost: 8000 / LoginUser / authorizationCode / Test / userId / Test / intend / int /
http://localhost: 8000 / LoginUser / authorizationCode / Test / userId / Test / intend / int / ema /
В этом сценарии, если вы хотите установить адрес электронной почты, вы должны установить намерение.
Итак, я думаю, что лучший способ - написать для них интерфейс отдельно, как показано ниже:
[OperationContract]
[WebGet(UriTemplate = "LoginUser/authorizationCode/{authorizationCode}/userId/{userId}/intend/{intend}/email/{email}")]
string LoginUser1(string authorizationCode, string userId, string intend, string email);
[OperationContract]
[WebGet(UriTemplate = "LoginUser/authorizationCode/{authorizationCode}/userId/{userId}/intend/{intend}/")]
string LoginUser2(string authorizationCode, string userId, string intend);
[OperationContract]
[WebGet(UriTemplate = "LoginUser/authorizationCode/{authorizationCode}/userId/{userId}/email/{email}")]
string LoginUser3(string authorizationCode, string userId, string email);
[OperationContract]
[WebGet(UriTemplate = "LoginUser/authorizationCode/{authorizationCode}/userId/{userId}/")]
string LoginUser4(string authorizationCode, string userId);
Для разных URIS будут запрошены разные интерфейсы;