web-dev-qa-db-fra.com

Web Api HTTPPost n'accepte pas d'int

J'essaie simplement de passer body a int et cela ne fonctionne pas Pourquoi dois-je créer une classe avec une propriété de type int? (alors ça marche)

FONCTIONNE

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

NE FONCTIONNE PAS

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

Test avec Postman

http: // localhost: 13497/api/UpdateMainReversed

Corps 

{
   "mainId" : 1615
}
7
user6321478

1.Votre [HttpPost] attend un int mais du corps vous passez un objet json. vous devriez passer json string comme ci-dessous. Pas besoin de mentionner le nom du paramètre

 enter image description here

2.vous devriez utiliser [FromBody] comme ci-dessous 

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

    }

ce lien l'explique bien

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

13
Boopathy T

Définissez l'attribut FromBody

Pour forcer l'API Web à lire un type simple à partir du corps de la demande, ajoutez l'attribut [FromBody] au paramètre.

Pour plus de détails Lien

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