请求 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 覆盖默认请求绑定行为。
给出
.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 覆盖默认请求绑定行为。