HttpDelete принимает несколько параметров для пакетного удаления - PullRequest
0 голосов
/ 01 февраля 2019

Я разрабатываю API, который будет использоваться клиентским приложением реагировать на администрирование.В соответствии с нашим разработчиком Frontend реагирующий администратор поддерживает удаление нескольких объектов одновременно, отправляя HTTP-запросы на удаление, такие как

DELETE /api/Entity/Delete?filter={"ids":[1,2,3]}

Очевидно, что одиночные запросы идентификатора хорошо обрабатываются этим методом

[HttpDelete("{id}")]
public async Task<IActionResult> Delete(int id)

Но чтобудет правильным способом и маршрутом для обработки запросов, содержащих несколько идентификаторов?Очевидно, что формат запроса на стороне клиента предназначен только для демонстрационных целей и может быть изменен при наличии невысказанных соглашений по таким запросам.

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

При отправке нескольких идентификаторов я считаю, что наилучшим способом является отправка их в виде массива JSON в теле.

Таким образом, URL-адрес равен /api/Entity/Delete, а тело:

[ 1, 2, 3 ]

Вы можете получить его:

[HttpDelete("/api/Entity/Delete")]
public async Task<IActionResult> Delete([FromBody] int[] ids)
{
}
0 голосов
/ 01 февраля 2019

Вы можете сделать параметр массивом:

[HttpDelete("Delete")]
public async Task<IActionResult> Delete(int[] id)

Затем вы будете называть его так:

DELETE /api/Entity/Delete?id=1&id=2&id=3

Это заполнит массив id { 1, 2, 3 }.

Поместить JSON в строку запроса, как в исходном примере (?filter={"ids":[1,2,3]}), возможно, но не просто.Вы должны справиться с переплетом самостоятельно .

...