DJJ*_*DJJ 12 c# asp.net-web-api2
我很反感没有找到解决这个问题的方法.
我开始使用Web API 2创建一个新的api,但是无法使POST和PUT工作.Get all和Get单项非常适合.
在任何地方都没有相关文章,我发现的那些文章只涉及到获取和Web API,而不涉及Web API 2.
任何帮助都可以.
// 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);
}
Run Code Online (Sandbox Code Playgroud)
所以基本上,我只是试图调试方法.
在这个链接中特别失望,因为它涵盖了几乎所有内容,但是ai.http://www.asp.net/web-api/overview/web-api-routing-and-actions/create-a-rest-api-with-attribute-routing
问候
Oma*_*ani 19
这是一个有效的代码
// 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);
}
Run Code Online (Sandbox Code Playgroud)
我已经声明CheckOut类是这样的:
public class CheckOut
{
public int Id { get; set; }
public string Property2 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这里的关键是:
1-您需要将[FromBody]添加到Api方法中.2-我用Fiddler测试了它,我选择了POST动作.ii- content-type:application/json.iii-在消息正文中传递{"Id":1,"Property2":"Anything"}.
希望有所帮助.
| 归档时间: |
|
| 查看次数: |
27925 次 |
| 最近记录: |