2017-01-10 43 views
0

我正在使用asp.net核心web api。下面是我的简单发布函数,它具有单个字符串参数。问题是当我使用[FromBody]时,字符串保持为空。我正在使用PostMan来测试我的服务。我想要原始数据从客户端传递到我的控制器。在邮差我选择体型RAW和 我设置头Content-Type文本/平原。原体包含Just“Hello World”字符串。在asp.net web api中使用FromBody时,字符串值为空

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

您的POST请求的内容必须使用已注册的内容类型进行格式化。如果是application/json,则内容必须是'''“mystring”''',双引号 – Kalten

+0

我已更新我的问题 – maxspan

+1

[来源](https://www.asp.net/web-api/overview/formats -and-模型结合/参数结合功能于ASPNET-web的API)。当参数具有[FromBody]时,Web API将使用Content-Type标题来选择格式化程序。默认情况下仅支持XML和JSON内容类型。 – Kalten

回答

2

the doc说:

当一个参数有[FromBody],网络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 core json input formatter implementation

Aspnet core xml input formatter implementation

Example: Creating a CSV Media Formatter

相关问题