鉴于
.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,但我想确保使用其余端点的用户不会发送不一致的请求。
答案 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覆盖默认的请求绑定行为。