container.Register<ICacheClient>(new MemoryCacheClient());
Cache można ustawiać i resetować w RESTowych endpointach. Ważne jest, aby każda cache'owana wartość miała swój unikalmy klucz, który możemy utworzyć za pomocą klasy UrnId.
public object Post(Entry entry) { var cacheKey = UrnId.Create<Entry>(entry.Date.ToShortDateString()); RequestContext.RemoveFromCache(base.Cache, cacheKey); CounterService.Add(entry.Count); return new EntryResponse() {Total = CounterService.Print()}; } public object Get(Entry entry) { var cacheKey = UrnId.Create<Entry>(entry.Date.ToShortDateString()); return RequestContext.ToOptimizedResultUsingCache(base.Cache, cacheKey, new TimeSpan(0,0,0,5), () => (object)CounterService.Print()); }
Wyliczenie cache'owanej wartości odbywa się poprzez lambda expression.
ServiceStack w genialny sposób wspiera tworzenie reguł walidacyjnych za pomocą FluentValidation. Reguły tworzymy w konstruktorach odpowiednich klas. Walidację należy najpierw zarejestrować.
public class MyEntryAppHost : AppHostBase { public override void Configure(Funq.Container container) { Plugins.Add(new ValidationFeature()); container.RegisterValidators(typeof(EntryService).Assembly); } }
Przykładowa klasa walidacyjna:
public class EntryValidator : AbstractValidator<Entry> { public EntryValidator() { RuleFor(e => e.Count).GreaterThanOrEqualTo(0).WithMessage("Koniecznie nieujemna"); RuleFor(e => e.Date).LessThanOrEqualTo(DateTime.Now); } }
Brak komentarzy:
Prześlij komentarz