ho un'entità con un ID diServiceStack Routing con ids RavenDB
public string ID {get;set;}
activities/1
(che viene da RavenDB).
sto registrando i seguenti percorsi nel mio ServiceStack AppHost
Routes
.Add<Activity>("/activities")
.Add<Activity("/activities/{id}");
sto usando un'applicazione spina dorsale per POST e PUT al mio servizio REST.
Cosa succede out-of-the-box:
- proprietà id viene serializzato in JSON come "attività/1" proprietà
- id viene codificato in rotta come "attività% 2F1"
- ServiceStack fornisce la precedenza alla proprietà ID basata su URL, quindi la mia stringa ottiene il valore codificato che non è direttamente utilizzabile da RavenDb.
Le opzioni che sono a conoscenza di:
- Change spina dorsale di inviare a "/ attività" e lasciare che il calcio JSON Serialiser in generazione
- Change RavenDB ID da usare trattini anziché barre
- fare il mio ID proprietà parse per la 2F% codificato sul set e convertire in una barra
Entrambi hanno svantaggi che mi sia perso RESTfuln nella mia API, che è indesiderabile, o non seguo le convenzioni RavenDb, che di solito sono ragionevoli out-of-the-fox. Inoltre, ho una preferenza personale per avere le barre.
Quindi mi chiedo se ci sono altre opzioni in servicestack che potrei usare per ordinare questo problema che comporta meno compromessi? La personalizzazione di Serialiser o il routing con caratteri jolly sono nella mia mente ....
Grazie per questo Matt. Quindi stai restituendo un ID intero da GET:/api/users? – Chris
No, ho trovato troppo maldestro manipolare il set di risultati, quindi restituisco solo l'ID della stringa completa. L'app client mantiene l'id completo della stringa, ma quando crea un url con un id, rimuove la parte frontale usando qualcosa come id.split ("/") [1] –