Нужна помощь по внедрению стека - PullRequest
5 голосов
/ 04 ноября 2011

У меня возникла проблема с моей реализацией стека служб, я сделал следующие запросы для вызова моей службы и реализовал один класс 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 был сделан этот вызов, стека службы погоды предоставляют какой-либо конкретный способ сделать это, или мне нужно написать ручную логику, проверяя свойства?

Заранее спасибо

1 Ответ

5 голосов
/ 04 ноября 2011

Просто проверьте запрос 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>();
...