Web Api HTTPPost 不接受 int不接受、Api、Web、int

2023-09-09 21:02:44 作者:可可丸子吖

我试图只传入 body 一个 int 但它不起作用为什么我需要创建一个具有 int 类型属性的类?(然后就可以了)

有效

[HttpPost][路线(api/UpdateMainReversed")]公共 IHttpActionResult UpdateMainVerified(DataAccess.Entities.RequestMain mainValues){ ....}
ASP.NET Web API入门教程 返回类型2

不工作

[HttpPost][路线(api/UpdateMainReversed")]公共 IHttpActionResult UpdateMainVerified(int mainId){ ....}

使用 Postman 进行测试

2.你应该使用[FromBody]如下

[HttpPost]公共无效UpdateMainVerified([FromBody] int mainid){}

这个链接解释得很好

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

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