需要有关servicestack实现的帮助

时间:2011-11-04 09:35:27

标签: servicestack

我的服务堆实现遇到了问题,我已经让以下请求url来调用我的服务并实现了一个perfmon类& perfmonservice类

    [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进行了这个调用,weather servicestack提供了任何特定的方法来执行此操作,或者我需要通过检查属性来编写手动逻辑?

先谢谢

1 个答案:

答案 0 :(得分: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>();