Нужна помощь по реализации servicestack

#servicestack

#servicestack

Вопрос:

Я столкнулся с проблемой с моей реализацией 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:

Просто проверьте запрос DTO, чтобы увидеть, какие поля заполнены, т.Е.

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

Также обратите внимание, что пользователь также может заполнить запрос dto с помощью querystring, т. Е. Если они вызвали вас с:

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

Тогда все поля будут заполнены. Наконец, вы можете получить информацию о запросе, используя, например, абсолютный URI, используемый для вызова запроса с:

 base.RequestContext.AbsoluteUri
  

Наконец, вы можете получить сам объект IHttpRequest с:

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