请求DTO填写订单和验证

时间:2015-01-08 11:35:14

标签: servicestack

鉴于
.Add(" / countries / {Id}"," PUT")的路线
和UpdateCountry DTO具有名为Id的属性 当
已收到/ countries / 1的请求 身体为{" Id":0,...}
然后
UpdateCountry dto实例转发到服务方法

public object Any(UpdateCountry request) 

的Id属性值为1(根据网址段请求,而不是根据主体数据为0)

如何/何处可以检测(并抛出异常)为Id属性提供的不一致值(url段与正文数据)?

这种行为让我想知道网段胜过身体。在哪里我可以找到一些关于DTO填充排序(url segment / querystring / body)/ criteria的文档?

PS:由于soap兼容性,我需要在url段中以及dto内部使用Id,但我想确保使用其余端点的用户不会发送不一致的请求。

1 个答案:

答案 0 :(得分:1)

您可以使用base.Request访问服务中HTTP请求的不同组件,例如:

public object Any(UpdateCountry request)
{
    var queryStringId = base.Request.QueryString["id"];
    var formDataId = base.Request.FormData["id"];
    var pathInfo = base.Request.PathInfo; // /countries/1
}

默认请求绑定首先反序列化在主体中发布的请求DTO,然后使用任何PathInfo,QueryString和FormData变量(如果有)覆盖它。您还可以通过registering your own binding Strategy覆盖默认的请求绑定行为。