我最近刚开始使用asp.net web api控制器。
我通过ajax调用这些控制器方法,但默认情况下,当我使用EF创建web api控制器时,没有一个控制器方法具有上面的属性,如:
[HttpPost]
[HttpPut]
[HttpDelete]
[ResponseType(typeof(ModelName))]
相反,他们都在他们之上:
Model.where(email: 'example@domain.com').last
但是,控制器方法名称确实在方法名称中包含了这些注释,如:
所以,当我把方法类型放在我的ajax调用中,例如'删除'时,是否有某种名称识别通过方法名称中包含“删除”一词?如果没有,api控制器如何知道在没有上面的属性的情况下调用哪种方法?
答案 0 :(得分:4)
答案 1 :(得分:2)
要查找操作,Web API会查看HTTP方法,然后查看 对于名称以该HTTP方法名称开头的操作。对于 例如,通过GET请求,Web API会查找启动的操作 使用“Get ...”,例如“GetContact”或“GetAllContacts”。这个 约定仅适用于GET,POST,PUT和DELETE方法。您可以 通过使用控制器上的属性启用其他HTTP方法。
答案 2 :(得分:0)
我需要澄清答案,因为基于注释的方法声明可用!
最常见的错误是"为什么from PIL import ImageGrab
ImageGrab.grab().save("screen_capture.jpg", "JPEG")
不适用于ApiController"是名称空间[HttpGet]/[ActionName]/[Route]
vs using System.Web.Http;
。非常棘手!!!
如果您在ApiController using System.Web.Mvc;
中找到,那么using System.Web.Mvc;
将是MVC版本,不会在[HttpGet]/[ActionName]/[Route]
中注册。
因此,请确保您在ApiController
中使用WebApiConfig.cs