gpt4 book ai didi

asp.net-core - ASP.NET 核心 : why must we use FromBodyAttribute to hydrate a parameter from a json payload during a POST request?

转载 作者:行者123 更新时间:2023-12-03 23:37:01 26 4
gpt4 key购买 nike

在将现有的 Web API 2 应用程序移植到 ASP.NET Core 时,我注意到现在我们需要将 FromBodyAttribute 应用于操作方法的参数(带有 json 负载的 POST 请求) :

[HttpPost]
public IActionResult([FromBody]MyComplexType parameter){ ... }

我已尝试搜索文档,但没有找到任何可以解释此决定背后的理由的内容。我确实找到了 post表示这样做是为了提高安全性(CSRF 场景)。

有人可以提供更多关于此的信息吗?

谢谢。

路易斯

最佳答案

默认的 ComplexTypeModelBinder 从来自请求的名称值对构建复杂对象图。这些名称值对来自各种 IValueProvider 实现。这可以表示查询字符串、表单值、标题或自定义源。 ASP.NET Core 的默认行为基于原始 ASP.NET MVC 行为,其中复杂对象不仅由请求正文中的数据组成,而且由请求的各个部分组成。这意味着您最终可能会从查询字符串和正文中获得对象中的值。

为了明确起见,我们在 ASP.NET Core MVC 中进行了调用,要求 [FromBody] 规避此行为并直接调用 IInputFormatter 管道。

PS:在 ASP.NET Core 2.1 中,使用 [ApiController] 属性装饰的 Controller 无需显式指定 [FromBody] 即可免费获得此功能。

关于asp.net-core - ASP.NET 核心 : why must we use FromBodyAttribute to hydrate a parameter from a json payload during a POST request?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51382243/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com