当前位置: 首页 > 面试题库 >

为什么在POST正文中需要数据时为什么需要FromBody属性

晏树
2023-03-14
问题内容

我可以将数据发送到服务器,但是只有在使用FromBody-Attribute时才可以。

为什么无法使用Post从主体自动读取json数据?

后端Web API

[HttpPost]
public async Task<IActionResult> Post([FromBody]CreateSchoolyearRequestDTO dto)
{

}

前端angularjs

this.createSchoolyear = function (schoolyear) {
  var path = "/api/schoolyears";
  return $http({
      url: path,
      method: "POST",
      data:  schoolyear,
      contentType: "application/json"
  }).then(function (response) {
      return response;
  });
};

问题答案:

仅因为某事是POST请求,所以没有明确的规则如何传递参数。POST请求仍可以包含URL中编码的查询参数。方法参数应该是“简单”类型(字符串,整数等)的查询参数。

通常,复杂类型应该是POST表单对象。标准的ASP.NET
POST请求是一种表单提交,例如,在登录时。这些请求中的参数通常编码为application/x-www-form- urlencoded,基本上是键/值对的字符串。对于复杂的参数类型(例如,表单视图模型对象),将其假定为默认值。

对于所有其他非默认情况,您需要明确说明方法参数的来源,其在请求中的传输方式。为此,有许多不同的属性:

  • FromBodyAttribute –对于来自请求正文的参数
  • FromFormAttribute –对于来自单个表单数据字段的参数
  • FromHeaderAttribute –对于来自HTTP标头字段的参数
  • FromQueryAttribute –对于来自URL中编码的查询参数的参数
  • FromRouteAttribute –对于来自路径数据的参数
  • FromServicesAttribute –对于应在方法级别注入服务的参数


 类似资料:
  • 互联网是超文本标记语言(HTML)页面的集合,它们彼此链接以形成概念性信息网络。随着时间的推移,静态资源数量增加,图像等更丰富的项目开始成为Web结构的一部分。 高级服务器技术允许动态服务器页面 - 其内容基于查询生成的页面。 很快,需要拥有更多动态网页才能获得动态超文本标记语言(DHTML)。一切都归功于JavaScript。在接下来的几年中,我们看到了跨帧通信,试图避免页面重新加载,然后在帧内

  • 当前信息时代,哪里都是应用程序。这些应用程序们不仅仅是运行人们工作场所的工具 - 它们现在正在经营人们的生活。 对即时响应的需求,完美的行为和更多的功能是前所未有的。 而且,当然,人们期望应用程序在不同类型的设备上运行平稳,特别是在移动设备上。 应用程序执行的速度与它所做的一样重要。 NGINX的核心功能,例如其具有高性能HTTP和反向代理服务器的大规模可扩展事件驱动架构,访问和带宽控制以及与各种

  • 开发人员和运营工程师是两个不同的组织团队,如果发现这两个团队在错误的轨道上协作,则表明需要DevOps。以下是两个团队经常出现的一些问题: 在DevOps之前,开发和运营团队完全孤立。 测试和部署是在设计构建之后完成的独立活动。因此,他们比实际构建周期消耗更多时间。 在不使用DevOps的情况下,团队成员将大量时间花在测试,部署和设计上,而不是构建项目。 手动代码部署会导致生产中出现人为错误 编码

  • 任何数据库都需要备份,备份数据是维护数据库必不可少的操作。 在学习如何备份数据之前,我们先了解一下数据库备份是为了应对哪些场景?为什么数据库需要备份? 备份就是为了防止原数据丢失,保证数据的安全。当数据库因为某些原因造成部分或者全部数据丢失后,备份文件可以帮我们找回丢失的数据。因此,数据备份是很重要的工作。 常见数据库备份的应用场景如下。 数据丢失应用场景: 人为操作失误造成某些数据被误操作 软件

  • 问题内容: 我正在尝试构建一个简单的React应用程序,并且想知道为什么我需要browser.min.js文件。 我已经包含了react和react-dom.js,但是除非未包含browser.min.js,否则什么也不会显示。 问题答案: 正如您在代码段中看到的那样,script标记的类型为“ text / babel”,这是因为您正在其中使用JSX(带有XML的Javascript)进行编码。

  • 问题内容: 根据PreparedStatement.setNull的Java文档,“注意:您必须指定参数的SQL类型”。该方法需要列的SQL类型的原因是什么? 我注意到传递java.sql.Types.VARCHAR还可用于非varchar列。是否存在不适合使用VARCHAR的方案(某些列类型或某些数据库提供程序)? 谢谢。 问题答案: 根据PreparedStatement.setNull的Ja