2013-01-02 40 views
1

刚刚发现ServiceStack上个月,我真的很喜欢这个伟大的框架工作。真的厌倦了WCF设置和静态方法原型!ServiceStack:路线和参数

我有问题!

我创建了一个类:事件,允许使用显示下列途径事件的一个或一个列表:

[Route("/events")] 
[Route("/events/{Id}")] 
public class Event 
{ 
    public ushort Id { get; set; } 
    public string FromDate { get; set; } 
    public string ToDate { get; set; } 
} 

,但我也想列出使用一种相同航线2个日期之间的事件。 其实路线只需要Id作为参数,但我想添加另一个路线指定FromDate: 我认为这样的事情会工作:/ events/01-01-2012/10-01-2012 为了获得所有事件之间2日期,但它不起作用。

是否可以定义允许根据不同参数定义不同路线的路线(取自DTO)?

我是管理路线的新手,很想知道如何根据不同的参数定义不同的过滤方式。

感谢您的帮助!令人敬畏的工作Demis!

+2

你应该考虑使用查询字符串参数。保持简单的路线是一种好的做法。这个查询已经可以在ServiceStack中使用,你的代码位于/ events?fromdate = 01-01-2012&todate = 10-01-2012 – kampsj

+0

是的,因为@kampsj说使用QueryString是IMO的首选,并且已经不适用与这些路线的箱子。但是,如果你想要,你可以添加'[Route(“/ events/{FromDate}/{ToDate}”)]'并使用三部分路径信息来调用它。 – mythz

回答

5

[Route("/events/from/{FromDate}/to/{ToDate}")]怎么样?

虽然我现在的思维方式将它们分成两个请求

[Route("/events/{Id}")] 
public class GetEventById 
{ 
    public ushort Id { get; set; } 
} 

[Route("/events/between/{FromDate}/{ToDate}")] 
public class GetEventsBetweenDates 
{ 
    public string FromDate { get; set; } 
    public string ToDate { get; set; } 
} 
0

在我使用onGET()函数,我想确定阉一个参数设置为空或不是。 当我添加'?'除了请求数据类型,我在尝试访问我的服务时遇到了“不良请求”异常。

这是否意味着所有REQUEST参数对于字符串都是空的,对于数字是0,对于日期等是01-01-000并且这是我应该在我的OnGet上测试以确定输入Querystring参数的值?

+0

找到了样品的答案。使用'?'对一些请求参数和测试值使用'.HasValue' - >它的工作原理!谢谢 – kilroyFR