1

これは私をナットにしています。私は何か非常に私のWeb APIにPOST要求を送信する簡単なことをやっています。エンドポイントは、以下のように設定されていますC#.net core web api postパラメータは常にnull

[HttpPost] 
[Route("locations")] 
public async Task<IActionResult> PostLocations([FromBody]IEnumerable<Location>locations) 

と、次のように私は電話を作ってるんだ:

http://localhost:60254/api/Fetch/locations 
With the body 
{ 
    "Locations": [ 
    { 
     "LocationId": "111", 
     "ProductId": 110, 
     "Sku": "11131-LJK" 
    } 
    ] 
} 

And header: content-type: application/json 

を今再び、これはボックスと、このfrickingの外に動作するはずです非常にシンプルなものです、フレームワークの変更はすべてを台無しにしています。私はのHttpContextを取得し、私は体が正常に送信されて見ることができます直接

using (StreamReader reader = new StreamReader(HttpContext.Request.Body, Encoding.UTF8)) 
    { 
     string body = reader.ReadToEnd(); 
    } 

体の流れを読めば

は今、私は私が好きに変身できるスーパー整形JSONを持っています。ですから、このエンドポイントは機能しません。

web apiプロジェクトテンプレートがこれを機能させるためにどのような設定をしていないのですか?

+0

これは、asp.net core、またはasp.net web apiの質問ですか? –

答えて

4

ペイロードはLocationのリストではなく、リストであるLocationsプロパティを持つオブジェクトではありません。代わりに

{ 
    "Locations": [ 
    { 
     "LocationId": "111", 
     "ProductId": 110, 
     "Sku": "11131-LJK" 
    } 
] 
} 

使用

[ 
    { 
    "LocationId": "111", 
    "ProductId": 110, 
    "Sku": "11131-LJK" 
    } 
] 
+0

Iは ' にそれを変更しようとした[ { "LocationId": "111"、 "のProductId":110、 "SKU": "11131-LJK" } ] ' それはまた、doesnの – Ioni

+0

さて、今は正常に動作していなかったのはなぜですか? 私はMurphyの法則と思います。 ありがとうございます。 – Ioni

0

文字列化1を通過し、JSONオブジェクトを渡してはいけません。他の人のために

var location = [ 
{ 
"LocationId": "111", 
"ProductId": 110, 
"Sku": "11131-LJK" 
    } 
] 
var dataToPost = JSON.stringify(location); 
0

を...あなたの[FromBody]ことを確認してくださいモデルとすべての子クラスは、パラメータのないコンストラクタを持ちます

関連する問題