#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>();