Plusieurs parameters facultatifs avec ServiceStack.Net

J’essaie d’implémenter un service avec plusieurs parameters facultatifs à l’aide de ServiceStack.Net.

Au moment où mon itinéraire ressemble à ceci

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

Je veux soutenir les uris comme ceci:

/ save / 2010/12 / lundi / 4 / mardi / 6 / mercredi / 7

soit lundi = 4, mardi = 6 et mercredi = 7

Cependant, je veux pouvoir ignorer des jours, c’est-à-dire que la personne qui appelle le service peut décider si elle souhaite enregistrer chaque valeur pour chaque jour …

c’est-à-dire comme avec des valeurs de paramètre manquantes

? Lundi = 4 & mercredi = 7 & vendredi = 6

Bien sûr, une solution serait d’avoir la route suivante et de passer 0 quand je ne veux pas sauvegarder la valeur.

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

Mais ….. y a-t-il un meilleur moyen de réaliser cette fonctionnalité?

Lorsque les exigences de votre itinéraire commencent à devenir trop compliquées, il deviendra éventuellement plus facile d’append un chemin générique afin que vous puissiez parsingr le rest de la chaîne de requête vous-même. c’est-à-dire que dans ce cas puisque la première partie de la chaîne de requête rest constante, vous pouvez append un mappage joker pour stocker les parties variables de la chaîne de requête, à savoir:

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

ServiceStack continuera à renseigner le DTO partiel avec les champs Année et Semaine (ainsi que tous les champs passés dans la chaîne de requête). Les parties variables restantes de l’URL sont stockées dans la chaîne DaysSsortingng que vous êtes libre de vous parsingr manuellement. Ainsi, le mappage ci-dessus pourra correspondre à des URL telles que:

/ save / 2010/12 / lundi / 4 / mardi / 6? mercredi = 7

Et remplissez les variables suivantes dans votre DTO de demande:

  • Année: 2010
  • Semaine: 12
  • Mercredi: 7
  • DaysSsortingng: lundi / 4 / mardi / 6