Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将FromBody属性与请求模型属性c进行比较#_C#_Asp.net Core_.net Core - Fatal编程技术网

C# 将FromBody属性与请求模型属性c进行比较#

C# 将FromBody属性与请求模型属性c进行比较#,c#,asp.net-core,.net-core,C#,Asp.net Core,.net Core,我与一个不尊重API规范的前端团队合作。例如,它们将响应用作请求,并发送许多没有请求模型的属性 我想检查body请求是否遵循API规范,以及body请求对象的结构是否与指定的请求模型相同 例如,这是我的方法 public virtual IActionResult UpdateUser([FromRoute][Required]int? id, [FromBody]UserEditRequest body) 在方法的最顶端,我需要检查请求格式,以及主体是否具有UserEditRequest中不

我与一个不尊重API规范的前端团队合作。例如,它们将响应用作请求,并发送许多没有请求模型的属性

我想检查body请求是否遵循API规范,以及body请求对象的结构是否与指定的请求模型相同

例如,这是我的方法

public virtual IActionResult UpdateUser([FromRoute][Required]int? id, [FromBody]UserEditRequest body)
在方法的最顶端,我需要检查请求格式,以及主体是否具有UserEditRequest中不存在的额外属性,返回错误消息并拒绝请求

我尝试检查body.GetType().GetProperties(),但这会返回UserEditRequest的属性,而不是实际收到的JSON请求的属性

比较和相等不能满足我的要求


有什么想法吗?

如果您提供了一个使用主体的API,并将其反序列化到类对象中,那么如果他们向您发送了更多您不需要的属性,并且这些属性将由于反序列化而立即被删除,您为什么还要麻烦呢?您记录了您的期望,但如果他们发送更多,就不用麻烦了(这就是我在使用其他第三方REST API时看到的)。如果您真的想这样做,您必须实现自己的。此类负责创建给定给控制器操作的参数对象。因此,在这里,您可以读取查询字符串或正文流,并在某些内容与您的期望不符时抛出错误,或者返回控制器操作的填充类。您好@Oliver,谢谢。主要原因是为了减少通信量。您好@sasa,这可能会有所帮助。
Controller.Request.Form
(或
action方法中的this.Request.Form
)是访问当前请求主体的简单方法。如果你只是在寻找一个短期的黑客,那么你应该能够对其进行迭代。否则,如果您打算重用自定义模型绑定器并将其保存在prod中,那么定制模型绑定器是一种不错的选择。