简体   繁体   中英

Web Api HTTPPost not accepting int

I am trying to just pass in body a int and it does not work Why do I need to create a class with a property of type int ? (then it works)

WORKS

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

DO NOT WORK

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

Testing with Postman

http://localhost:13497/api/UpdateMainReversed

Body

{
   "mainId" : 1615
}

1.Your [HttpPost] expects a int but from body you are passing a json object. you should pass json string like below. No need to mention parameter name

在此输入图像描述

2.you should use [FromBody] as below

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

    }

this link explains it well

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

Set FromBody Attribute.

To force Web API to read a simple type from the request body, add the [FromBody] attribute to the parameter.

For details Link

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM