Web API 2 Http Post方法

我很反感没有找到解决这个问题的办法。

我开始使用Web API 2创建一个新的api,但是无法使POST和PUT工作。 Get all和Get单项完美运行。

在任何地方都没有相关文章,我发现的那些文章只与Get和Web API有关,而与Web API 2无关。

任何帮助都可以。

// POST: api/checkOuts [HttpPost] [ResponseType(typeof(checkOut))] [ApiExplorerSettings(IgnoreApi = true)] public async Task 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); } 

所以基本上,我只是试图调试方法。

在这个链接中特别失望,因为它涵盖了几乎所有内容,但是ai。 http://www.asp.net/web-api/overview/web-api-routing-and-actions/create-a-rest-api-with-attribute-routing

问候

这是一个有效的代码

  // POST api/values [HttpPost] [ResponseType(typeof(CheckOut))] public async Task 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); } 

我已经宣布CheckOut类是这样的:

 public class CheckOut { public int Id { get; set; } public string Property2 { get; set; } } 

这里的关键是:

1-您需要将[FromBody]添加到Api方法中。 2-我用Fiddler测试了它,我选择了POST动作。 ii- content-type:application / json。 iii-在消息正文中传递{“Id”:1,“Property2”:“Anything”}。

希望有所帮助。