Вопрос

Эти 3 маршрута то же самое?Какой из них обычно предпочитают?

[Route("/todo/{id}", "DELETE")]
[Route("/todo/delete","POST")]
[Route("/todo/delete/{id}","GET")]
public class DeleteTodo : IReturnVoid
{
    public int Id { get; set; }
}
.

Большое спасибо ...

Это было полезно?

Решение

Предпочтительный маршрут на самом деле включает в себя Id в PathInfo, поскольку Удалить Запросы не имеют кузова HTTP-запроса, вы можете отправить эту информацию, например:

[Route("/todo/{id}", "DELETE")]
public class DeleteTodo : IReturnVoid
{
    public int Id { get; set; }
}
.

для прагматических причин, по которым вы можете позволить POST сделать удаление, поскольку браузеры мои по умолчанию (и некоторые прокси) не позволяют отправлять запросы удаления.

[Route("/todo/{id}/delete", "POST")]
public class DeleteTodo : IReturnVoid
{
    public int Id { get; set; }
}
.

Вы можете имитировать запрос DELETE ajax или jQuery, добавив заголовок запроса x-http-метод http в вашем вызове Ajax или в качестве поля в вашемFormData или QueryString, например,

POST /todo/1
X-Http-Method-Override=DELETE 
.

или встроен в html formdata, как:

<form action="/todo/1" method="POST">
   <input type="hidden" name="X-Http-Method-Override" value="DELETE"/>
</form>
.

Несмотря на то, что важно не разрешать удаление через Get, как по контракту, не должны иметь побочных эффектов, поэтому безопасны для кэширования и воспроизведения HTTP Side-Ware, такими как Proxies, и т. Д.

Другие советы

Если вы хотите следовать рекомендациям для отдыха, вы не должны использовать Get или Post, чтобы удалить ресурс.

Получить глагол используется для чтения ресурса. Важное правило это то, что операция получить безопасную. То есть это можно сделать неоднократно без изменений заметно состояние ресурса. Это свойство Очень важно по разным причинам. Во-первых, индексационные двигатели используют получить Чтобы индексировать содержимое ресурса. Так было бы плохо, если индексирование Ресурс также изменил его. Во-вторых, посредников, таких как прокси, может кэшировать результаты операции получения, чтобы ускорить последующие доступ к тому же ресурсу.

Удаленные и удаление глаголов позволяют запрос на изменение состояния ресурс атомично.

Пост глагол может нести различные значения. Это швейцарская армия Нож HTTP глаголов. Для некоторых ресурсов он может быть использован для изменения внутреннее состояние. Для других его поведение может быть удаленным Процедура вызова.

Посмотрите на то, что Страница для полного описания.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top