mam podmiot z IDServiceStack Routing z ravendb identyfikatorów
public string ID {get;set;}
activities/1
(która pochodzi z RavenDB).
ja rejestracji następujących trasach w moim ServiceStack AppHost
Routes
.Add<Activity>("/activities")
.Add<Activity("/activities/{id}");
Używam app szkieletowych POST i PUT do mego odpoczynku Service.
Co się out-of-the-box:
- właściwość id odcinkach w json jako "działania/1" właściwość
- id kodowanych w szlaku "działaniami% 2F1"
- ServiceStack daje pierwszeństwo właściwości id opartej na adresie URL, więc mój ciąg otrzymuje zakodowaną wartość, która nie ma bezpośredniego zastosowania do RavenDb.
Opcje Jestem świadomy:
- Zmień szkieletu do umieszczenia na „/” działania i niech rzut JSON Serialiser w generacji
- Zmień RavenDb ID używać myślników zamiast ukośniki
- bądź moją właściwość ID przetwarza na zakodowanym% 2F na planie i konwertować do ukośnikiem
Obie mają wady, że albo straci RESTfuln w moim interfejsie API, co jest niepożądane, lub nie stosuję się do konwencji RavenDb, które są zwykle sensowne poza lisami. Ponadto, mam osobistą preferencję do posiadania ukośników.
Zastanawiam się, czy są jakieś inne opcje w servicestack, które mógłbym użyć, aby rozwiązać ten problem, który wymaga mniej kompromisu? Albo konfiguracja Serialisera, albo routing wieloznaczny są w mojej głowie ...
Dzięki za tym Matt. Czy zwracasz identyfikator Integer z GET:/api/users? – Chris
Nie, okazało się to zbyt niezdarne, aby manipulować zestawem wyników, dlatego właśnie zwracam pełny ciąg znaków. Aplikacja kliencka zachowuje pełny ciąg znaków, ale kiedy buduje adres URL z identyfikatorem, usuwa przednią część za pomocą czegoś takiego jak id.split ("/") [1] –