Я создал проект ASP. NET Core Web API с Entity Framework Core и создал новый «контроллер API с действиями, использующий Entity Framework», и, хотя это замечательно, я чувствую, что PUT
по умолчанию и POST
поменяны местами и хотели бы получить обратную связь по этому поводу:
// PUT: api/Items/5
// To protect from overposting attacks, enable the specific properties you want to bind to, for
// more details, see https://go.microsoft.com/fwlink/?linkid=2123754.
[HttpPut("{id}")]
public async Task<IActionResult> PutItem(long id, Item Item)
{
if (id != Item.Id)
{
return BadRequest();
}
_context.Entry(Item).State = EntityState.Modified;
try
{
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
if (!ItemExists(id))
{
return NotFound();
}
else
{
throw;
}
}
return NoContent();
}
// POST: api/Items
[HttpPost]
public async Task<ActionResult<Item>> PostItem(Item Item)
{
_context.Items.Add(Item);
await _context.SaveChangesAsync();
return CreatedAtAction(nameof(GetItem), new { id = Item.Id }, Item);
}
private bool ItemExists(long id)
{
return _context.Items.Any(e => e.Id == id);
}
Насколько я знаю, PUT
должен предоставлять объект для добавления в базу данных, а PATCH
должен быть используется для обновления существующего объекта. Но из того, что я вижу в этом коде, PUT
используется для обновления уже существующего элемента с указанием идентификатора, который уже должен существовать, а POST
просто загружает новый ресурс без указания какого-либо идентификатора, как я себе представляю PUT
должно работать.
Я ошибаюсь или мне следует поменять HttpPut
на HttpPatch
и HttpPost
на HttpPut
?