Ich habe eine Einheit mit der IDServiceStack Routing mit RavenDB ids
public string ID {get;set;}
activities/1
(die aus RavenDB kommt).
Ich Registrierung die folgenden Routen in meinem ServiceStack AppHost
Routes
.Add<Activity>("/activities")
.Add<Activity("/activities/{id}");
ich ein Rückgrat App POST bin mit und PUT meinem REST-Service.
Was out-of-the-box passiert:
- id-Eigenschaft in die json als "Aktivitäten/1" serialisiert wird
- id-Eigenschaft wird in Route codiert als "-Aktivitäten% 2F1"
- ServiceStack gibt der URL-basierten ID-Eigenschaft den Vorrang, so dass meine Zeichenfolge den codierten Wert erhält, der RavenDb nicht direkt nutzt.
Die Optionen Ich bin mir dessen bewusst:
- ändern Rückgrat, um es zu "/ Aktivitäten" und lassen Sie die JSON Serializer Kick in
- ändern RavenDB ID Generation Bindestriche eher zu verwenden als schlitzt
- Make my Id-Eigenschaft Parsing für die codierte% 2F am Set und konvertieren entweder einen Schrägstrich
Beide haben den Nachteil, daß ich verlieren RESTfuln Das ist in meiner API unerwünscht, oder ich folge nicht den RavenDb-Konventionen, die normalerweise außerhalb des Fuchses sinnvoll sind. Außerdem habe ich eine persönliche Vorliebe für Schrägstriche.
Also frage ich mich, ob es weitere Optionen in Servicestack gibt, die ich verwenden könnte, um dieses Problem zu lösen, die weniger Kompromisse beinhalten? Entweder Serializer-Anpassung oder Platzhalter-Routing sind in meinem Kopf ....
Vielen Dank für diesen Matt. Also gibst du eine Integer ID von GET zurück:/api/users? – Chris
Nein, ich fand es zu ungeschickt, die Ergebnismenge zu manipulieren, daher gebe ich nur die vollständige Zeichenkette Id zurück. Die Client-App behält die vollständige String-ID bei, aber wenn sie eine URL mit einer ID erstellt, entfernt sie den Frontteil mit etwas wie id.split ("/") [1] –