[AcceptVerbs (HttpVerbs.Post)]와 [HttpPost]의 차이점은 무엇입니까?


81

[AcceptVerbs (HttpVerbs.Post)] / [AcceptVerbs (HttpVerbs.Get)]을 사용하여 액션을 꾸밀 수 있습니다.

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(string title)
{
    // Do Something...
}

또는 [HttpPost] / [HttpGet] 속성 사용

[HttpPost]
public ActionResult Create(string title)
{
    // Do Something...
}

다른가요?


1
HttpPost는 MVC 2.0+이며 Matthew가 말했듯이 짧은 손
dbones

[HttpPost]와 같은 표현식은 asp net mvc에서 어떻게 호출됩니까? 데코레이터?
andilabs 2014


나는 것으로 나타났습니다 [AcceptVerbs("GET")]해당 작업에 대한 항목이 도움말 문서에서 생성되는 중지 할 수 있습니다.
CompanyDroneFromSector7G

답변:


55

아무것도. 하나는 다른 하나의 속기입니다.


1
하나는 단순히 하나의 엔드 포인트에서 가져 오기 및 게시를 허용하지 않습니다. 그 끝점의 요점은 무엇입니까?
선생님

이것은 틀 렸기 때문에 제안 된 대답이되어서는 안됩니다.
John Lord

201

[HttpPost][AcceptVerbs(HttpVerbs.Post)]. 유일한 차이점은 [HttpGet, HttpPost]동일한 작업에서 함께 사용할 수 없다는 것 입니다. 작업이 GET 및 POST 모두에 응답하도록하려면 [AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)].


20
이것은 받아 들여진 것보다 더 정확하고 유익한 대답입니다.
24x7Programmer

1
저는 [HttpPost]와 [HttpGet]을 선호합니다. 내가 한 행동을 둘 필요가있을 때 : 그냥 사용하지 마십시오 (당신이 PUT을 필요로하지 않기 때문에, 삭제 또는 다른 사람)
세르게이 G.

1
나는 일관성을 선호하는데, 이는 불행히도 "오래된"AcceptVerbs만이 항상 작동하고 수치스러운 방식임을 의미합니다. Microsoft는이 "새로운"방법이 혼동과 문제를 일으키는 것을 방지하기 위해 파이프 라인에서 여러 사용 및 프로세스를 허용하도록 속성을 변경해야합니다 (예 : stackoverflow.com/questions/16658020/…)
Tony Wall

2
@CodeChief 빠른 생각 실험을 통해 이것이 왜 그런지 명확히 해줄 것입니다. AcceptVerbs속성은 단일 플래그 매개 변수를 사용합니다. Or-ing하여 여러 플래그를 설정합니다. [HttpPost]속기 일뿐입니다. 속기를 [AcceptVerbs(HttpVerbs.Post)] 사용하면 OR 플래그를 함께 사용할 수있는 메커니즘이 없습니다. 이것이 AcceptVerbs가 여전히 존재하는 이유입니다 (역 호환성의 이유를 넘어서).
Robert Harvey

@RobertHarvey-그것이 무엇인지 분명합니다. 토론은 두 가지 다른 HttpGet 및 HttpPost 속성이 함께 작동 하도록 허용하지 않는 이유 입니다. 제가 생각해야 할 것은 개발 팀을 교육하고 구축하는 것입니다. 다른 개발자에게 무엇을하라고 말합니까 ... "이 속성을 사용하십시오 ... 그러나이 경우에는 다른 것을 사용하십시오 ....". 따라서 일관성을 위해 사람들에게 간단히 AcceptVerbs를 사용하도록 말할 수있는 유일한 방법은 AcceptVerbs입니다. HttpGet / HttpPost의 이러한 제한은 직관적이지 않으며 버그 일 수 있습니다. 전반적으로 큰 문제가 아니라 단지 "잡았다".
Tony Wall
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.