2017-01-10 133 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

相關問題