在asp.net web api中使用FromBody时,字符串值为空
我使用的是asp.net核心web api。 下面是我的简单post函数,它有一个字符串参数。 问题是当我使用[FromBody]时,字符串保持为空。 我正在使用PostMan来测试我的服务。 我希望原始数据从客户端传递到我的控制器。 在Postman中我选择了体型RAW,并设置了标题Content-Type text / plain。 Raw Body包含Just“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"); }
就像医生说的那样:
当参数具有[FromBody]时,Web API使用Content-Type标头选择格式化程序。
默认情况下仅支持XML和JSON内容类型。 因此,您需要使用application/xml
, application/json
或注册自定义IInputFormatter
。
接下来,您需要发送与所选内容类型匹配的内容。 对于json,如果参数是int
发送一个数字。 如果它是一个类,则发送一个json对象。 如果是字符串,则发送json字符串。 等等。
int => 14 string => "azerty" class => { "propName" : "value" } Array => [] ... => ...
在您的情况下,您应该发送application/json
内容类型和内容:
"Hello string"
而不只是
Hello string
Aspnet核心json输入格式化程序实现
Aspnet核心xml输入格式化程序实现
示例:创建CSV媒体格式化程序
我确实通过在post man中传递行数据来使其工作。不要忘记在值中添加“=”符号作为前缀。
public string Post([FromBody]string value) { return value; }