我正在使用ApiController
. 我很难理解为什么 ApiControllers 在某些方面与 Controllers 不同。
拿
public class QuestionCommentController : ApiController
{
QuestionCommentCRUD crud = new QuestionCommentCRUD();
// GET api/questioncomment/5
[HttpGet]
public string Read(int id)
我习惯于Controller
允许我在不通过属性指定合法动词的情况下创建方法的类型:
public class QuestionCommentController : Controller
{
QuestionCommentCRUD crud = new QuestionCommentCRUD();
// GET questioncomment/5
public string Read(int id)
在后一种情况下,我可以在不指定HttpGetAttribute
. 我发现这种行为令人困惑,原因如下:
- 现在有两个
HttpGet
:System.Web.Http.HttpGet
和System.Web.Mvc.HttpGet
System.Web.Http.HttpGe
t 是必需的,System.Web.Mvc.HttpGet
GET请求不需要ApiController
请求需要唯一的路由/api/controller...
Controller
'''让我掉进了成功的坑里。较新的ApiController
需要手持。
我注意到默认模板有一个我不明白的语法:
public void Post([FromBody]string value)
{
}
动词是方法名称以及正在发生的一些时髦[FromBody]
的事情。也许这就是为什么事情是这样设置的?ApiController
关于导致这种设计的使用存在哪些假设?