web-dev-qa-db-ja.com

Web API HTTPPostがintを受け入れない

body a intを渡そうとしていますが、機能しませんなぜint型のプロパティを持つクラスを作成する必要があるのですか? (それでうまくいく)

[〜#〜]機能[〜#〜]

[HttpPost]
[Route("api/UpdateMainReversed")]
public IHttpActionResult UpdateMainVerified(DataAccess.Entities.RequestMain mainValues)
    {  ....}

動作しない

[HttpPost]
[Route("api/UpdateMainReversed")]
public IHttpActionResult UpdateMainVerified(int mainId)
    {  ....}

Postmanを使用したテスト

http:// localhost:13497/api/UpdateMainReversed

{
   "mainId" : 1615
}
12
user6321478

1.Your [HttpPost]はintを期待していますが、ボディからjsonオブジェクトを渡しています。以下のようなjson文字列を渡す必要があります。パラメータ名について言及する必要はありません

enter image description here

2.以下のように[FromBody]を使用する必要があります

[HttpPost]
    public void UpdateMainVerified([FromBody] int mainid)
    {

    }

このリンクはそれをよく説明しています

https://docs.Microsoft.com/en-us/aspnet/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api

16
Boopathy T

FromBody属性を設定します。

Web APIがリクエストの本文から単純型を読み取るように強制するには、[FromBody]属性をパラメーターに追加します。

詳しくは リンク

[HttpPost]
[Route("api/UpdateMainReversed")]
public IHttpActionResult UpdateMainVerified([FromBody] int mainId)
    {  ....}
2