Parametri opzionali multipli con ServiceStack.Net

Sto cercando di implementare un servizio con più parametri opzionali utilizzando ServiceStack.Net

Al momento il mio percorso sembra così

Routes.Add("/save/{Year}/{Week}"); 

Voglio sostenere uris in questo modo:

/ Save / 2010/12 / Lunedi / 4 / Martedì / 6 / Mercoledì / 7

cioè lunedì = 4, martedì = 6 e mercoledì = 7

Tuttavia voglio la possibilità di ignorare i giorni, ovvero la persona che chiama il servizio può decidere se vuole salvare ogni valore per ogni giorno …

cioè In questo modo con i valori dei parametri mancanti

? Lunedi = 4 & Mercoledì = 7 e Venerdì = 6

Ovviamente una soluzione sarebbe quella di avere il seguente percorso e passare semplicemente 0 quando non voglio salvare il valore.

 Routes.Add("/save/{Year}/{Week}/{Monday}/{Tuesday}}/{Weds}/{Thurs}/{Fri}/{Sat}/{Sun}"); 

Ma ….. c’è un modo migliore per raggiungere questa funzionalità?

Quando i requisiti del tuo percorso iniziano a diventare troppo complicati, alla fine diventerà più facile aggiungere semplicemente un percorso con una wild card in modo da poter analizzare te stesso il resto della querystring. vale a dire in questo caso poiché la prima parte della stringa di query rimane costante, è ansible aggiungere una mapping jolly per memorizzare le parti variabili della stringa di query, ovvero:

 Routes.Add("/save/{Year}/{Week}/{DaysString*}"); 

ServiceStack popolerà ancora il DTO parziale con i campi Anno e Settimana (come pure tutti i campi che sono stati passati in querystring). Le restanti parti variabili dell’URL sono memorizzate in DaysString, quindi sei libero di analizzarti manualmente. Quindi la mapping sopra sarà in grado di abbinare url come:

/ Save / 2010/12 / Lunedi / 4 / Martedì / 6? Mercoledì 7 =

E compila le seguenti variabili nel tuo DTO della richiesta:

  • Anno: 2010
  • Settimana: 12
  • Mercoledì: 7
  • DaysString: Monday / 4 / Tuesday / 6