2011-11-04 55 views
5

我與我的servicestack執行一個面對的問題,我必須做出以下請求URL打電話給我服務,實現一個性能監視器類& perfmonservice類需要幫助的servicestack實施

[RestService("/perfmon/application/{appliationId}")] 
    [RestService("/perfmon/application/{appliationId}/{countername}")] 
    [RestService("/perfmon/user/{userId}")] 
    [RestService("/perfmon/user/{userId}/{countername}")] 

現在,當我將調用任何URL會調用下面的函數

public override object OnGet(Perfmon request) 
     {     
       return base.OnGet(request); 
     } 

憑什麼我在這裏決定哪些URL作出這一呼籲,天氣servicestack提供任何具體的方式做到這一點還是我需要通過檢查屬性來編寫手冊的邏輯?

由於提前

回答

5

只是檢查請求DTO看到被填充哪些字段,即

if (request.applicationId != null && request.countername != null) #2 
if (request.userId != null && request.countername != null) #4 
if (request.applicationId != null) #1 
if (request.userid != null) #3 

還要注意的是,用戶可能會由於填充查詢字符串請求DTO爲好,即叫你:

/perfmon/application/1/countername?userId=2 

然後所有的字段將被填充。最後,你可以檢索與像絕對URI用來調用與請求的請求信息:

base.RequestContext.AbsoluteUri 

最後你可以得到IHttpRequest對象本身:

var httpReq = base.Request; //or with base.RequestContext.Get<IHttpRequest>(); 
+0

感謝您的幫助 –