ServiceStack查询字符串映射

问题描述 投票:1回答:1

我很好奇是否可以修改servicesstack路由映射规则。我希望非查询字符串参数进入模型的一个区域,查询字符串参数进入另一个区域。

具体来说,我有这条路线:

[Route("/gis/services/{Folders*}/{ServiceName}/{ServiceType}/{LayerId}/query", HttpMethods.Get)]
public class Model : Envelope<Request>
{
}

信封的定义如下:

    public class Envelope<T>
    {
        public string Folders { get; set; }
        public string ServiceType { get; set; }
        public string ServiceName { get; set; }
        public int LayerId { get; set; }
        public T Payload { get; set; }
    }

如何将查询字符串参数映射到Payload中,并将其他所有内容(文件夹,ServiceType,ServiceName,LayerId)映射为正常情况?

routes servicestack
1个回答
2
投票

在ServiceStack路由中只定义了请求的路径信息,所有其他属性可以由其他请求参数填充,如QueryString或Request Body。

Issues with your Routes

  • 您也应该只在路径末尾使用像{folders*}这样的WildCard映射来避免歧义。
  • 路线应与DTO上的精确物业名称相匹配,例如: {ServiceName}
  • 为了获得最大的互操作性,您的Request DTO应该是扁平的,并且没有任何复杂的类型属性通过QueryStrings填充,没有标准
  • 您的请求DTO用于define your Service Contract,我们建议不要尝试干洗或隐藏继承
  • 不要将Service名称用于请求DTO,该名称用于您的服务实现类
© www.soinside.com 2019 - 2024. All rights reserved.