我正在開發一個簡單的筆記 api,我正在嘗試創建一個 Put 方法來更新我的筆記串列中的筆記,但是當我嘗試通過 SwaggerUI 更新任何筆記時,我得到一個 404 狀態代碼。
這是我的[HttpPut]要求:
[HttpPut("{id}")]
public IActionResult Put([FromBody] Note requestParam)
{
if (!ModelState.IsValid)
{
return BadRequest("Not a valid model");
}
using (_datacontext)
{
var ExistingNote = _datacontext.Note.Where(n => n.Id == requestParam.Id)
.FirstOrDefault<Note>();
if (ExistingNote != null)
{
ExistingNote.Title = requestParam.Title;
ExistingNote.Description = requestParam.Description;
ExistingNote.Completed = requestParam.Completed;
_datacontext.SaveChanges();
} else
{
return NotFound();
}
}
return Ok();
}
我的DataContext:
public class DataContext : DbContext
{
public DataContext(DbContextOptions<DataContext> option) : base(option)
{
}
public DbSet<Note> Note { get; set; }
}
最后是我的筆記模型:
public class Note
{
[Key]
public int Id { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public bool Completed { get; set; }
}
我研究了 Http 主體,因為它似乎需要成為請求的一部分,但仍然得到錯誤代碼。它有什么問題?(post 和 get 方法都有效!)。
另外,錯誤代碼:

uj5u.com熱心網友回復:
在控制器上使用該[HttpPut("{id}")]屬性時,您需要在控制器方法的簽名中添加一個引數:
IActionResult Put([FromRoute] int Id, [FromBody] Note requestParam)
然后,當 Id=123 時,您可以像這樣呼叫 API
PUT http://{base-url}/123
然后您需要使用路由中的 id 查詢資料背景關系(這意味著您可以將其從正文中洗掉)
另一方面,如果您不希望 Id 作為請求 URL 的一部分并將其保留在正文中,則需要從路由模板中洗掉 Id:
[HttpPut]不帶 {id}。
不用說,確保 Id 確實存在于資料背景關系中。否則,您的代碼將回傳,是的,404。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/489973.html
標籤:C# 网 asp.net-mvc 休息
下一篇:Docker上的Rails:ActiveRecord::ConnectionNotEstablished:無法將主機名轉換為地址:再試一次
