У меня есть класс DTO с булевым полем IsLocked.Форсирование свойств DTO по пути в ServiceStack
Легко построить маршрут, как
/.../{IsLocked}, и он присвоит этому полю значение запроса.
Но мне нужно что-то наподобие
/.../lock /.../unlock, и это означает, что поле IsLocked принудительно присвоено true или false в зависимости от маршрута.
Могу ли я сделать это без CustomRequestBinder и без разбора Request.RawUrl?
Заранее благодарим за помощь.
Благодарим за быстрый ответ. Он реализован как одна операция ChangeLockedState (bool locked), но клиент хочет иметь два разных пути в API, таких как блокировка и разблокировка. И это также полезно для другого метода, который принимает статус параметра перечисления, и клиент хочет, чтобы один путь вводил значение перечисления (/.../{Status}) и совершенно другой путь к определению фиксированного значения перечисления (что-то вроде /.../newfiles , а DTO не содержит этого поля). Второй способ - это решение, но есть ли другой способ? –
Существует перегруженный метод Routes.Add в AppHost, который принимает параметр propertyExpressions. Думаю, это может помочь, но я не понимаю, как это работает, и я не нашел никакой информации об этом. Также возможно помочь мне ключевое слово {ignore}, но на эту тему также очень мало информации. –
@VladimirShiyanov '{ignore}' просто соответствует пустому заполнителю, см. Документы в [сопоставлении игнорируемых путей] (https://github.com/ServiceStack/ServiceStack/wiki/Routing#matching-ignored-paths). Вот пример использования свойствExpressions (https://github.com/ServiceStack/ServiceStack/blob/cb4eb92a9029b841e352fbd1c5d97ec75939b488/tests/ServiceStack.ServiceHost.Tests/Routes/ServiceRoutesTests.cs#L104), то есть он предоставляет только способ использования выражение типизированного свойства для сопоставления имен свойств. – mythz