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中的表示方式。当你考虑它时,它们是两个不同的概念。 –