C# 自定义ServiceStack路由中的参数拆分
我有一个REST端点,它允许客户端获取一个或多个变量的值。我正在使用ServiceStack来实现这一点。问题源于ServiceStack如何解析多个变量。似乎默认行为是拆分“Variables”参数字符串(请参见下面的Request DTO VariableRequest),它只是拆分逗号上的字符串。问题是我的一些变量是多维数组,我们允许用户指定该数组的索引,但要做到这一点,用户必须用逗号分隔索引。这意味着ServiceStack将我的一些变量一分为二 例如,以下是此端点的两个可能URL:C# 自定义ServiceStack路由中的参数拆分,c#,routing,
servicestack,C#,Routing,
servicestack,我有一个REST端点,它允许客户端获取一个或多个变量的值。我正在使用ServiceStack来实现这一点。问题源于ServiceStack如何解析多个变量。似乎默认行为是拆分“Variables”参数字符串(请参见下面的Request DTO VariableRequest),它只是拆分逗号上的字符串。问题是我的一些变量是多维数组,我们允许用户指定该数组的索引,但要做到这一点,用户必须用逗号分隔索引。这意味着ServiceStack将我的一些变量一分为二 例如,以下是此端点的两个可能URL: 本
[Route("/get/{Variables}"]
public class VariableRequest{
public string[] Variables {get; set;}
}
如果您需要,您需要自己使用,例如:
然后在您的请求中,您可以自己解析原始请求.Variables
字符串
尽管我会避免在/path/info
中包含任何复杂类型,而是通过QueryString传递它们。因此,在本例中,我将从Route/path/info中删除变量
:
[Route("/get"]
public class VariableRequest
{
public string Variables {get; set;}
}
这将允许您使用/get?变量=…
调用您的服务
IMO/get
对于REST-ful端点来说不是一个很好的选择,我个人将此路由定义为:
[Route("/vars"]
public class GetVariables : IReturn<GetVariablesResponse>
{
public string Symbols { get; set; }
}
[路由(“/vars”]
公共类GetVariables:IReturn
{
公共字符串符号{get;set;}
}
因此,可以使用/vars?symbols=…
调用该服务。有关设计API的更多信息,请参阅:
请求.Variables
字符串
虽然我会避免在/path/info
中包含任何复杂类型,而是通过QueryString传递它们。因此,在这种情况下,我会从Route/path/info中删除变量
:
[Route("/get"]
public class VariableRequest
{
public string Variables {get; set;}
}
这将允许您使用/get?变量=…
调用您的服务
IMO/get
对于REST-ful端点来说不是一个很好的选择,我个人将此路由定义为:
[Route("/vars"]
public class GetVariables : IReturn<GetVariablesResponse>
{
public string Symbols { get; set; }
}
[路由(“/vars”]
公共类GetVariables:IReturn
{
公共字符串符号{get;set;}
}
因此,可以使用/vars?symbols=…
调用该服务。有关设计API的更多信息,请参阅: