[英]WCF: Multiple optional parameters in UriTemplate
我的服務的 UriTemplate 如下所示:
[WebGet(UriTemplate = "LoginUser/authorizationCode/{authorizationCode}/userId/{userId}/intend/{intend}/email/{email}")]
function 看起來像這樣:
public User LoginUser(string authorizationCode, string userId, string intend, string email)
我平時的電話是這樣的:
http://localhost:60522/MyService.svc/json/LoginUser/authorizationCode/111222333/userId/0006435cec5aa5640639b5d08314bb989a43519/intend/yyy/email/abc@web.de
我的下一個任務是使 intent 和 email 參數可選。
所以我的電話必須在所有這些變體中工作:
http://localhost:60522/MyService.svc/json/LoginUser/authorizationCode/111222333/userId/0006435cec5aa5640639b5d08314bb989a43519/intend/yyy/email/abc@web.de
http://localhost:60522/MyService.svc/json/LoginUser/authorizationCode/111222333/userId/0006435cec5aa5640639b5d08314bb989a43519/intend/yyy
http://localhost:60522/MyService.svc/json/LoginUser/authorizationCode/111222333/userId/0006435cec5aa5640639b5d08314bb989a43519/email/abc@web.de
http://localhost:60522/MyService.svc/json/LoginUser/authorizationCode/111222333/userId/0006435cec5aa5640639b5d08314bb989a43519
如何編輯我的模板和 function 以使其工作?
您可以將intent和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/
在這種情況下,如果要設置 email,則必須設置意圖。
所以我認為最好的方法是分別為它們編寫一個接口,如下所示:
[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會請求不同的接口;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.