Je suis dégoûté de ne pas avoir trouvé de solution à ce problème.
J'ai commencé à créer une nouvelle API à l'aide de l'API Web 2 et je n'arrive tout simplement pas à faire fonctionner POST et PUT. Les éléments uniques Get all et Get single fonctionnent parfaitement.
Il n'y a aucun article connexe nulle part, et ceux que j'ai trouvés ne concernent que Gets et l'API Web, mais pas l'API Web 2.
Toute aide ferait l'affaire s'il vous plaît.
// POST: api/checkOuts
[HttpPost]
[ResponseType(typeof(checkOut))]
[ApiExplorerSettings(IgnoreApi = true)]
public async Task<IHttpActionResult> PostcheckOut(checkOut co)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
db.checkOuts.Add(checkOut);
try
{
await db.SaveChangesAsync();
}
catch (DbUpdateException)
{
if (checkOutExists(checkOut.id))
{
return Conflict();
}
else
{
throw;
}
}
return CreatedAtRoute("DefaultApi", new { id = checkOut.id }, checkOut);
}
Donc, fondamentalement, j'essaie simplement d'obtenir un débogage dans la méthode.
A été particulièrement déçu de ce lien car il couvrait presque tout, mais ai. http://www.asp.net/web-api/overview/web-api-routing-and-actions/create-a-rest-api-with-attribute-routing
Cordialement
Ceci est un code de travail
// POST api/values
[HttpPost]
[ResponseType(typeof(CheckOut))]
public async Task<IHttpActionResult> Post([FromBody] CheckOut checkOut)
{
if (checkOut == null)
{
return BadRequest("Invalid passed data");
}
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
db.checkOuts.Add(checkOut);
try
{
await db.SaveChangesAsync();
}
catch (DbUpdateException)
{
if (checkOutExists(checkOut.id))
{
return Conflict();
}
else
{
throw;
}
}
return CreatedAtRoute("DefaultApi", new { id = checkOut.Id }, checkOut);
}
J'ai déclaré que la classe CheckOut était comme ceci:
public class CheckOut
{
public int Id { get; set; }
public string Property2 { get; set; }
}
Les éléments clés ici sont:
1- Vous devez ajouter [FromBody] à votre méthode Api. 2- Je l'ai testé avec Fiddler, i- en choisissant POST. Ii- type de contenu: application/json. Iii- passant {"Id": 1, "Property2": "N'importe quoi"} dans le corps du message.
J'espère que cela pourra aider.