servicestack,Routes,servicestack" /> servicestack,Routes,servicestack" />

Routes ServiceStack:路由和参数

Routes ServiceStack:路由和参数,routes,servicestack,Routes,servicestack,上个月刚发现ServiceStack,我非常喜欢使用这个伟大的框架。真的厌倦了WCF设置和静态方法原型 我有个问题 我创建了一个类:Events,它允许使用以下路径显示一个或一个事件列表: [Route("/events")] [Route("/events/{Id}")] public class Event { public ushort Id { get; set; } public string FromDate { get; set; } public s

上个月刚发现ServiceStack,我非常喜欢使用这个伟大的框架。真的厌倦了WCF设置和静态方法原型

我有个问题

我创建了一个类:Events,它允许使用以下路径显示一个或一个事件列表:

[Route("/events")]
[Route("/events/{Id}")]
public class Event
{
    public ushort Id { get; set; }   
    public string FromDate { get; set; }
    public string ToDate { get; set; }
}
但我还想列出两个日期之间使用相同路线的事件。 实际上,该路由仅将Id作为参数,但我想添加另一个路由,指定FromDate: 我以为这样做会奏效:/events/01-01-2012/10-01-2012 以获取两个日期之间的所有事件,但它不起作用

是否可以定义允许基于不同参数(取自DTO)定义不同路由的路由

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

谢谢你的帮助!真棒的工作

如何
[路由(“/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; }
}
怎么样
[路由(“/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; }
}
在我的OnGet()函数中,我想确定参数是否设置为NULL。 当我在请求数据类型旁边添加了一个“?”时,我在尝试访问我的服务时遇到了一个“坏请求”异常

这是否意味着字符串的所有请求参数都为null,数字为0,日期为01-01-000等等,这就是我应该在OnGet上测试的值,以确定输入查询字符串参数?

在我的OnGet()函数中,我想确定参数是否设置为null。 当我在请求数据类型旁边添加了一个“?”时,我在尝试访问我的服务时遇到了一个“坏请求”异常


这是否意味着所有的请求参数都是空的字符串、0的数字、日期的01-01-000等等,这是我应该在OnGET上测试的值来确定输入查询字符串参数吗?

你应该考虑使用QuestString参数。保持路线简单是很好的做法。此查询将在ServiceStack中使用您上面的代码/events?fromdate=01-01-2012&todate=10-01-2012是的,正如@kampsj所说,使用QueryString是我的首选,并且已经在这些路由中使用了。但是如果你想要,你可以添加<代码> [路由(//事件/ {0} /{toDe}})] /<代码>,并使用3部分路径信息调用它。保持路线简单是很好的做法。此查询将在ServiceStack中使用您上面的代码/events?fromdate=01-01-2012&todate=10-01-2012是的,正如@kampsj所说,使用QueryString是我的首选,并且已经在这些路由中使用了。但是如果您愿意,您可以添加
[Route(“/events/{FromDate}/{ToDate}”)]
并使用三部分路径信息调用它。在示例中找到了答案。在一些请求参数上使用了“?”,并使用“.HasValue”测试了值->它可以工作!感谢您在样品上找到答案。在一些请求参数上使用了“?”,并使用“.HasValue”测试了值->它可以工作!谢谢