Удалить запрос без параметра id в .net webApi - PullRequest
0 голосов
/ 27 ноября 2018

У меня есть .net ядро ​​WebApi, как показано ниже.И это работает отлично.Но когда я пишу [HttpDelete] вместо [HttpDelete("{id}")], это не работает.В чем может быть причина?

Мой URL: http://localhost:5004/api/Student/DeleteStudent/23

[ApiController]
[Route("api/[controller]/[action]")]
public class StudentController : ControllerBase
{
    //[HttpDelete] ///////////////// This is not working
    [HttpDelete("{id}")] /////////// This is working
    public async Task<ServiceResult> DeleteStudent(int id)
    {
      return await studentService.DeleteStudent(id);
    }
}

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

Без параметра шаблона маршрута {id} единственный способ заполнить это значение будет через строку запроса

http://localhost:5004/api/Student/DeleteStudent?id=23 

Таблица маршрутов сопоставит параметр строки запроса с параметром действия, чтобы выполнить сопоставление.

В любом случае необходимо указать id, чтобы знать, какое действие вызывать и какую запись удалять.

0 голосов
/ 27 ноября 2018

Вы должны сообщить маршрутизатору о своей подписи API. Теперь, заменив [HttpDelete("{id}")] на [HttpDelete], ваша подпись станет api/[controller]/[action], таким образом, ваш маршрутизатор будет игнорировать что-либо после этой подписи.

Вы можетеопределите пользовательский маршрут, если вы хотите оставить его как [HttpDelete], где вы также будете указывать id в качестве параметра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...