ASP.net Web APIでapiコントローラを使用していますが、postメソッドに[FromBody]タイプで値を渡す必要があります。
[HttpPost]
public HttpResponseMessage Post( [FromBody]string name)
{
....
}
プラグインの Postman を使用していますが、postメソッドに送信する際に name の値は常に null になります。この画像を見てください: [ここに画像の説明を入力][1]。
とPostメソッドにあります: [ここに画像の説明を入力][2]。
なぜこんなことになったのか?
文字列を生のjsonで投稿し、ダブルクォーテーションを忘れないようにします。
jsonとFromBodyを使用して単一のプリミティブ文字列をバインドすることはできません。jsonはオブジェクトを送信し、コントローラは複雑なオブジェクト(モデル)を期待します。もし単一の文字列のみを送信したい場合は、urlエンコーディングを使用してください。
ヘッダーには
Content-Type: application/x-www-form-urlencoded
POSTリクエストのメッセージ本文は、=saeed
(テスト値に基づく)であり、それ以外は何もないはずです。未知の文字列や変数については、誤って入力文字でエスケープしないように、値をURLエンコードする必要があります。
モデルを作成し、それを代わりに使用します。
メッセージ本文の値: {"name":"saeee"}
.
c#
public class CustomModel {
public string Name {get;set;}
}
コントローラメソッド
public HttpResponseMessage Post([FromBody]CustomModel model)
メッセージボディの代わりにURIを使って、プリミティブな文字列を投稿に渡します。