ServiceStack在单个路由元素中有多个值

时间:2014-11-18 06:52:48

标签: servicestack

假设我有以下DTO课程

public class SumRequest : IReturn<SumResponce>
{
    public int First { get; set; }

    public int Second { get; set; }
}

public class SumResponce
{
    public int Result { get; set; }
}

可以将路由策略设置为[路由(&#34; / sum / {First} / {Second}&#34;,&#34; GET&#34;)],它将起作用。< / p>

但是类似的东西呢 [路线(&#34; / sum / {First} + {Second}&#34;,&#34; GET&#34;)] 要么 [路线(&#34; / sum / {First}加{Second}&#34;,&#34; GET&#34;)]

为什么它不起作用?

2 个答案:

答案 0 :(得分:0)

您可以为同一个DTO定义多个路线。例如:

[Route("/sum/{First}.+.{Second}", "GET")]
[Route("/sum/{First}.plus.{Second}", "GET")]
public class SumRequest : IReturn<SumResponce>
{
    public int First { get; set; }

    public int Second { get; set; }
}

public class SumResponce
{
    public int Result { get; set; }
}

编辑:

看起来ServiceStack {Path}运算符需要分开。或/ chars(谢谢Mythz)。

此外,如果您使用的是IIS,为了使用加号(+),您需要允许双重转义请求。

答案 1 :(得分:0)

ServiceStack变量{Path}组件必须由/.分隔 - 这样您就可以使用.作为变量分隔符,例如:

[Route("/sum/{First}.{Second}")]
public class Sum : IReturn<SumResponce>
{
    public int First { get; set; }

    public int Second { get; set; }
}

然后您可以致电:

/sum/1st.2nd

有关ServiceStack路由检出的更多信息Routing docs