在 ServiceStack 的 Routes 上阅读这个较早的答案。路由应该只包含/path/info
它们不应该包含能够自动填充所有请求 DTO 的 queryString。
如果您的 DTO 中只有一个代码属性,例如:
[Route("/registration", "GET")]
public class Registration
{
public string Code { get; set; }
}
您已经可以使用以下内容填充它:/registration?code=abc
。
否则,如果您想坚持为 queryString 和 DTO 使用不同的名称,您可以尝试通过将 DTO 注释为[DataContract]
:
[Route("/registration", "GET")]
[DataContract]
public class Registration
{
[DataMember(Name="code")]
public string AuthorizationCode { get; set; }
}
无论哪种方式,您始终可以直接在您的服务或过滤器中访问 QueryString:
public MyService : Service
{
public object Post(Registration request)
{
var code = base.Request.QueryString["code"];
}
}