邮递员插件将值[FromBody]传递给发布方法时的空值[重复]

Posted

技术标签:

【中文标题】邮递员插件将值[FromBody]传递给发布方法时的空值[重复]【英文标题】:Null value when Pass values [FromBody] to post method by Postman plugin [duplicate] 【发布时间】:2017-09-27 23:13:42 【问题描述】:

我在 ASP.net Web API 中使用 api 控制器,我需要通过 [FromBody] 类型将值传递给 post 方法..

 [HttpPost]
 public HttpResponseMessage Post( [FromBody]string name)
 
     ....
 

我使用 Postman 插件,但是当发送到 name 的 post 方法值始终为 null.. 遵循此图像:

在 Post 方法中:

为什么会这样?!

【问题讨论】:

将控制器操作上的 [FromBody] 属性更改为 [FromForm] 更改为 FromForm 让程序运行,但它没有传输数据。 【参考方案1】:

使用原始json发布字符串,不要忘记双引号。

【讨论】:

哦,伙计....这是迄今为止我找到的最有效的答案 这是这个问题的最佳答案。它奏效了。【参考方案2】:

您不能使用 json 和 FromBody 绑定单个原始字符串,json 将传输一个对象,而控制器将依次期望一个复杂对象(模型)。如果您只想发送单个字符串,请使用 url 编码。

在您的标题集上

Content-Type: application/x-www-form-urlencoded

POST 请求消息正文的正文应为=saeed(基于您的测试值),仅此而已。对于未知/变量字符串,您必须对值进行 URL 编码,这样您就不会意外地因输入字符而转义。


备用 1

创建一个模型并使用它。

消息正文值:"name":"saeee"

c#

public class CustomModel 
    public string Name get;set;

控制器方法

public HttpResponseMessage Post([FromBody]CustomModel model)

备用 2

使用 URI 而不是消息正文将原始字符串传递给您的帖子。

【讨论】:

谢谢 ;) 备用 1 工作 我使用了 Postman 的替代品 Insomnia,在这里我选择了“Form URL Encoded”,它给出了指定的内容类型,但我给参数指定了 c# 参数的名称,但它没有工作,相反我只需要插入值而不是名称,这样请求就变成了 =value 而不是 param=value

以上是关于邮递员插件将值[FromBody]传递给发布方法时的空值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

关于将值传递给方法的困惑? [复制]

将值从 iOS 本机代码传递给 cordova

layuiajax传递对象参数,后台使用FromBody接收对象参数

layuiajax传递对象参数,后台使用FromBody接收对象参数

同时使用 [FromUri] 和 [FromBody] 绑定复杂的 Web Api 方法参数

当我使用 if else 然后将值传递给设置 onClick 时,如何获取微调器值?