2011-11-04 45 views
5

Tôi là một vấn đề phải đối mặt với thực hiện servicestack của tôi, tôi có làm sau yêu cầu url để gọi dịch vụ của tôi và thực hiện một perfmon lớp lớp & perfmonserviceCần giúp đỡ về việc thực hiện servicestack

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

Bây giờ khi tôi sẽ gọi bất kỳ URL nó sẽ gọi hàm sau

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

vậy làm thế nào tôi có thể quyết định ở đây rằng đó URL thực hiện ghé cảng này, thời tiết servicestack cung cấp bất kỳ cách nào cụ thể để làm điều này hay tôi cần phải viết logic thủ công bằng cách kiểm tra các thuộc tính?

Cảm ơn trước

Trả lời

5

Chỉ cần kiểm tra theo yêu cầu DTO để xem những lĩnh vực được dân cư, tức là

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 

Cũng lưu ý rằng người dùng có thể di chuyển dto yêu cầu với chuỗi truy vấn là tốt, tức là nếu họ gọi cho bạn bằng:

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

Sau đó, tất cả các trường sẽ được điền. Cuối cùng bạn có thể lấy thông tin về các yêu cầu với như Absolute URI thường gọi theo yêu cầu với:

base.RequestContext.AbsoluteUri 

Cuối cùng, bạn có thể nhận được các đối tượng IHttpRequest chính nó với:

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

Nhờ sự giúp đỡ của bạn –

Các vấn đề liên quan