问题标签 [frombodyattribute]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
60 浏览

asp.net-mvc - 是否可以将多个内容类型路由和绑定到同一个操作?

来自微软文档

默认情况下,模型绑定从 HTTP 请求中的以下来源以键值对的形式获取数据:

  1. 表单域
  2. 请求正文(对于具有 [ApiController] 属性的控制器。)
  3. 路线数据
  4. 查询字符串参数
  5. 上传的文件

我很想知道有没有一种方法可以从不使用ApiControllerAttribute.

我问这个问题的原因是我们从 asp net 5 迁移到 net core 5,我们希望将模型参数与内容类型请求独立绑定:withcontent-type: x-www-form-urlencoded或 withcontent-type application/json charset=utf-8

我已经阅读了很多关于这个问题的内容,但只发现决定使用本文[FromBody]中描述的属性为每个内容类型分离方法,这不适合我。

0 投票
1 回答
44 浏览

c# - 尝试使用 WebClient 将空正文传递给 POST 端点

我目前在我的项目中有一个端点:

在我的客户端,我试图用 WebClient 调用这个端点,如下所示:

这是我担心的地方:

  • 对于这个端点,我通常会传递一个 JSON 对象

  • 但是,我希望这个端点也不需要正文,我希望它为空,因为端点不应该需要它

  • 如果您查看我的body变量 - 我将其设置为“{}”,否则我没有找到将“EMPTY”主体传递给端点的不同方法

问题:

  • 如何正确地将 EMPTY 正文传递到此端点?(这个端点将被不同的客户使用,我只是在寻找最佳实践方法?

  • 在我的端点中,我有[FromBody] object Json参数。让它成为更好的做法object还是我可以这样做JObject仍然可以接受一个空的身体

如果这些问题看起来很明显,请原谅我对这些问题的“菜鸟”,我才刚刚开始 API 开发,并希望确保我正在使用最佳实践。

0 投票
1 回答
45 浏览

asp.net-core - 使用 HttpWebRequest 调用 ASP.NET Core 2.1 API POST 正文为空,似乎无法解析为 JSON

我正面临一个奇怪的错误,其中 .NET Core 2.1 API 在某些情况下似乎忽略了 JSON 主体。

  • 我建议了许多其他问题(例如this one,它本身引用了其他问题),但无法解决我的问题。

我有类似以下 API 方法的东西:

而相关的配置是:

TestJsonConverter我为测试为什么事情不能正常工作而创建的简单转换器在哪里,它很简单:

使用 Postman 调用 api 方法是可行的,这意味着它通过 JSON 转换器的CanConvert, CanRead, ReadJson,然后路由到SendInvoice包含body解析的 json 的路径。

但是,使用HttpWebRequest调用 api 方法(从 .NET Framework 4,如果这很重要)只会通过CanConvert,然后路由到SendInvoicenull body

请求正文只是一个简单的 json,类似于:

当我直接阅读正文时,我得到了两种情况的预期值:

我看不出这两种请求之间有任何有意义的区别——左边是 Postman 的请求,右边是 HttpWebRequest:

在此处输入图像描述

可以肯定的是,Content-Type标题设置为application/json. 此外,FWIW,HttpWebRequest正文设置如下:

并调用:

问题

为什么body与 一起使用时为空HttpWebRequest?为什么在这种情况下会跳过 JSON 转换器读取方法?

0 投票
1 回答
40 浏览

c# - ASP.NET Core Web API:如何在参数绑定时将 null 值分配给请求中缺少的属性

使用 .NET 6.0。当尝试将参数绑定到请求的主体时,我想为请求null中未包含的属性分配一个值。

考虑以下:

如果我发送以下请求{"property1":"abc"},我想value1成为{"property1":"abc","property2":null},但我得到一个 HTTP 400,其中包含一条property2必需的错误消息。

使 property2 成为的最佳方法是null什么?我很确定它在 .NET Core 3.1 中是这样工作的。

谢谢