我使用的是ApiController
。我很難理解爲什麼ApiController在某些方面與控制器不同。爲什麼ApiController需要在方法上顯式的Http動詞?
採取
public class QuestionCommentController : ApiController
{
QuestionCommentCRUD crud = new QuestionCommentCRUD();
// GET api/questioncomment/5
[HttpGet]
public string Read(int id)
我習慣於Controller
類型的讓我沒有通過屬性指定的法律動詞create方法:
public class QuestionCommentController : Controller
{
QuestionCommentCRUD crud = new QuestionCommentCRUD();
// GET questioncomment/5
public string Read(int id)
在後一種情況下,我可以執行GET/POST沒有指定HttpGetAttribute
。我覺得這種行爲的幾個原因令人困惑:
- 還有的現在二人
HttpGet
:System.Web.Http.HttpGet
和System.Web.Mvc.HttpGet
System.Web.Http.HttpGe
t的需要,System.Web.Mvc.HttpGet
是不需要GET請求ApiController
請求需要唯一途徑/api/controller...
Controller
允許我下降int o成功的坑。較新的ApiController
需要手持。
我注意到默認模板有語法,我不明白:
public void Post([FromBody]string value)
{
}
動詞是一些時髦的[FromBody]
事情會沿着方法名。也許這就是爲什麼這樣設置的原因?導致這種設計的ApiController
的使用有什麼假設?如果按照建於約定
是因爲它是基於慣例所以你應該調用的行動'GetQuestionComment',並推斷出你創建一個'GET'行動? – theyetiman 2013-05-14 16:34:43