请求 DTO 填充订单和验证

Request DTO populating order and validation

给出
.Add("/countries/{Id}", "PUT")
的路线 和带有 属性 名为 Id
的 UpdateCountry DTO 当
已收到 /countries/1 的请求
和 body 作为 {"Id":0,...}
那么
转发到服务方法的 UpdateCountry dto 实例

public object Any(UpdateCountry request) 

的 ID 属性 值为 1(根据 url 段请求,而不是根据 body 数据的 0)

How/Where 可以检测(并抛出异常)为 Id 属性 提供的不一致值(url 段与 body 数据)?

这种行为让我想知道 url 细分市场是否胜过 body。我在哪里可以找到一些关于 DTO 填充排序(url segment/querystring/body)/标准的文档?

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

您可以使用 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 覆盖默认请求绑定行为。