【问题标题】:string value is Empty when using FromBody in asp.net web api在 asp.net web api 中使用 FromBody 时字符串值为空
【发布时间】:2017-05-24 08:46:03
【问题描述】:

我正在使用 asp.net core web api。下面是我的简单 post 函数,它有一个字符串参数。问题是当我使用 [FromBody] 时,字符串保持为空。我正在使用 PostMan 来测试我的服务。我希望原始数据从客户端传递到我的控制器。在 Postman 中,我选择了 RAW 体型和 我设置了标题 Content-Type text/plain。原始正文仅包含“Hello World”字符串。

[HttpPost]
        [Route("hosted-services/tokenize-card")]
        public IActionResult Test([FromRoute]decimal businessKey,[FromBody] string body)
        {
            var data = businessKey;
            return new JsonResult("Hello World");
        }

【问题讨论】:

  • 您的 POST 请求的内容必须使用已注册的内容类型进行格式化。如果是 application/json 则内容必须是 "mystring" 并带有双引号
  • 我已经更新了我的问题
  • Source。当参数具有 [FromBody] 时,Web API 使用 Content-Type 标头来选择格式化程序。默认情况下仅支持 XML 和 JSON 内容类型。
  • 你的参数是一个字符串,所以你的原始内容必须是一个json字符串。 “Hello World”

标签: c# asp.net asp.net-web-api


【解决方案1】:

就像the doc 说的:

当参数有 [FromBody] 时,Web API 使用 Content-Type 标头 选择格式化程序。

默认情况下仅支持 XML 和 JSON 内容类型。所以你需要使用application/xmlapplication/json或者注册一个自定义的IInputFormatter

接下来,您需要发送与所选内容类型匹配的内容。 对于json,如果参数为int,则发送一个数字。如果是类,则发送一个 json 对象。如果是字符串,则发送 json 字符串。等等。

int => 14
string => "azerty"
class => { "propName" : "value" }
Array => []
... => ...

在您的情况下,您应该发送application/json content-type 并作为内容:

"Hello string"

不只是

Hello string

Aspnet core json input formatter implementation

Aspnet core xml input formatter implementation

Example: Creating a CSV Media Formatter

【讨论】:

  • 对于 .net core 3.1 post(url, JSON.stringify(yourVariable)) 在控制器 MyMethod([FromBody] string yourVariable) 上的工作就像魅力一样
【解决方案2】:

我确实通过在 PostMan 中作为行数据传递来使其工作。不要忘记添加“=” 作为值的前缀登录。

 public string Post([FromBody]string value)
 {
     return value;
 }

【讨论】:

  • 请 = 没用.. 对于 .net core 3.1 post(url, JSON.stringify(yourVariable)) 在控制器 MyMethod([FromBody] string yourVariable) 上的工作就像魅力一样
【解决方案3】:

frombody 表示直接获取body,不需要使用变量值对。

例如:

你的控制器是这样的。

[HttpPost]
public IActionResult GetStringFromBody([FromBody] string token)
    {
    ...
    }

错误:

正确:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-05
    • 1970-01-01
    • 2015-08-11
    • 2015-08-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多