ExpressJs允許您匹配條件(又名動態或模糊)路由匹配。像GET '/people(/sex/:sexFilter)?(/age-over/:ageOverFilter)?'
ExpressJs條件路由的ServiceStack客戶端路由
的路由將匹配下面的例子:
/people
/people/sex/female
/people/sex/female/age-over/30
和(最重要的)/people/age-over/30
我不知道是否有配置ServiceStack的方式(一C#Xamarin應用程序)客戶端,如果請求dto對象屬性被留下,將生成以下路由null
如:
HttpService.Instance.Get<Person[]>(new SearchPeopleRoute() { sexFilter = "female" });
// Generates /people/sex/female
HttpService.Instance.Get<Person[]>(new SearchPeopleRoute() { ageOverFilter = 30 });
// Generates /people/age-over/30
該解決方案需要可擴展到許多搜索過濾器,因此對於每個過濾器排列具有[Route(...)]
屬性將不可維護。
我不知道是否有一種方法可以在調用之前在運行時生成路由,但這很棒。
感謝您的好評。我想,如果這是ServiceStack的唯一解決方案,我將不得不更改我使用的軟件包。這太糟糕了,他們不允許你在運行時創建你的路線。我發現它們有點僵化(也許故意)。 關於REST路由應該如何形成,以及當我們在服務器端進行時,我們已經進行了很多辯論,這就是我們選擇的方式。您可能有權區分標識符和過濾器在URL中的表示方式。當你考慮它時,它們是兩個不同的概念。 –