[解決済み] web-api の POST ボディオブジェクトは常に null です。
2023-08-21 01:17:33
質問
まだWeb APIを勉強中なので、愚問と思われたらご容赦ください。
私はこれを私の
StudentController
:
public HttpResponseMessage PostStudent([FromBody]Models.Student student)
{
if (DBManager.createStudent(student) != null)
return Request.CreateResponse(HttpStatusCode.Created, student);
else
return Request.CreateResponse(HttpStatusCode.BadRequest, student);
}
これが機能しているかどうかをテストするために、Google Chromeの拡張機能である "Postman" を使って、HTTP POSTリクエストを構築してテストしています。
これは私の生のPOSTリクエストです。
POST /api/Student HTTP/1.1
Host: localhost:1118
Content-Type: application/json
Cache-Control: no-cache
{"student": [{"name":"John Doe", "age":18, "country":"United States of America"}]}
student
はオブジェクトのはずですが、アプリケーションをデバッグすると、APIが受け取った
student
オブジェクトを受け取りますが、コンテンツは常に
null
.
どのように解決するのですか?
FromBody は、入力された POST 値がプリミティブ型でない場合、パラメータが非 null になるために特定の形式である必要があるという点で、奇妙な属性です。(学生はこちら)
-
でリクエストを試してみてください。
{"name":"John Doe", "age":18, "country":"United States of America"}
をjsonとしてリクエストしてみてください。 -
を削除します。
[FromBody]
属性を削除して、解決策を試してみてください。プリミティブでない型でも動くはずです。(学生) -
を使って
[FromBody]
属性の値を送信することもできます。=Value
形式ではなくkey=value
形式ではありません。この場合、キー値であるstudent
は空の文字列でなければならないことになります...
他にも、studentクラスのカスタムモデルバインダーを書き、カスタムバインダーでパラメータを属性化する方法があります。
関連
-
[解決済み】プログラム実行中に1秒待つ
-
[解決済み】HRESULTからの例外:0x800A03ECエラー
-
[解決済み】2年前のMSDateを把握する【クローズド
-
[解決済み】パラメータ付きRedirectToAction
-
[解決済み】IntPtrとは一体何なのか?
-
[解決済み] HTTP POST Web リクエストの作成方法
-
[解決済み] Chromeを使用してASP.NET Web APIがXMLの代わりにJSONを返すようにするにはどうすればよいですか?
-
[解決済み] ASP.NET Web APIに整数の配列を渡しますか?
-
[解決済み] ASP.NET Web APIでエラーを返すためのベストプラクティス
-
[解決済み] Web API メソッドに json の POST データをオブジェクトとして渡すにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】スクリプトクラスが見つからないので、スクリプトコンポーネントを追加できない?
-
[解決済み] メンバー '<メンバー名>' にインスタンス参照でアクセスできない
-
[解決済み】ASP.NET Core Dependency Injectionのエラーです。アクティブ化しようとしているときに、タイプのサービスを解決できません。
-
解決済み] Critical error detected c0000374 - C++ dll returns pointer off allocated memory to C# [解決済み] Critical error detected c0000374 - C++ dll returns pointer off allocated memory to C#.
-
[解決済み】C# ASP.NET使用時に「WebClientのリクエスト中に例外が発生しました。
-
[解決済み】「namespace x already contains a definition for x」エラーの修正方法は?VS2010にコンバートした後に発生しました。
-
[解決済み】取り消せないメンバはメソッドのように使えない?
-
[解決済み] EntityTypeにキーが定義されていないエラー
-
[解決済み】Visual Studio: 操作を完了できませんでした。パラメータが正しくありません
-
[解決済み】プロセスが実行されているかどうかを知るには?