Можно ли пометить действие как глаголом GET, так и DELETE в ASP.NET MVC? - PullRequest
1 голос
/ 17 марта 2011

Я бы хотел сделать GET /Product/1 и DELETE /Product/1 вместо того, чтобы иметь отдельное действие, например DELETE /Product/Delete/1:

Например:

public class ProductController : Controller
{
    [HttpGet]
    [HttpDelete]
    public ActionResult Index(int id) { ... }
}

Как мнеразличить HTTP-глаголы в теле действия?

Ответы [ 3 ]

3 голосов
/ 17 марта 2011

Я бы разделил логику на два разных метода.

Если вам нужна одна и та же сигнатура метода, но разные http-методы, вы сможете сделать следующее:

[HttpGet]
public ActionResult Index(int id) { ... }

[ActionName("index")]
[HttpDelete]
public ActionResult IndexDelete(int id) { ... }
2 голосов
/ 17 марта 2011

Вы не хотите использовать Get | Delete для того же действия, потому что это просто сбивает с толку.У одного метода нет причин делать две вещи. Один метод делает одну вещь .

Это будет отстой.

Чтобы обойти это, создайте ActionResult, который фактически удаляет, и добавьте к нему атрибут HttpDelete.

Это предпочтительныйспособ сделать это:

public class ProductController : Controller
{
    public ActionResult Index(int id)
    {
    }

    [HttpDelete]    
    public ActionResult Delete(int id)
    {

    }
}

Подробнее о см. здесь .

0 голосов
/ 17 марта 2011

Не делай этого. Вы не экономите ни на каком коде и не получаете выгоды от смешивания идемпотента GET с потенциально опасным DELETE Что если у них другое требование кеширования? Или другая авторизация?

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