我们创建好了项目后,WebApiConfig 和ValuesController这两个是两个核心文件。
WebApiConfig.cs文件
WebApiConfig里面只有一个方法,这个方法在Global.asax文件里的Application_Start()方法被调用,Global.asax文件是一个全局文件,当我们网页启动时就会去执行它。Register(HttpConfiguration config)方法是配置WEB API路由的。
ValuesController.cs文件
这里有好几个方法,有Get()、Get(int id)、Post()、Put()、Delete()方法,这些方法是根据HTTP请求来调用相对应的控制器方法。 比如get的方式 那么他就会去找 带GET为前缀的方法GETxxxxx()。
同时这里不能出现两个带GET前缀的方法,不然会报错。
{ "Message": "出现错误。", "ExceptionMessage": "找到了与该请求匹配的多个操作: \r\n类型 ApiDemo.Controllers.ValuesController 的 Get\r\n类型 ApiDemo.Controllers.ValuesController 的 GetABC",
它的基类是ApiController,是WEB API的核心。ApiController 负责协调WEB API对象模型中各种不同的类。在HTTP请求的处理中执行一些关键的任务。选择和运行控制器类上的一个操作action,将HTTP请求消息的各元素转成控制器操作方法的参数,并将操作方法返回值转换为有效的HTTP响应正文。运行各种帅选器,这些帅选器可以是为操作action或者controller专门配置 也可以是全局的,为控制器类的操作方法提供适当的上下文。
public class ValuesController : ApiController { // GET api/values public IEnumerable<string> Get() { return new string[] { "value1", "value2" }; } // GET api/values/5 public string Get(int id) { return "value"; } // POST api/values public void Post([FromBody]string value) { } // PUT api/values/5 public void Put(int id, [FromBody]string value) { } // DELETE api/values/5 public void Delete(int id) { } }
发送/api/values的http get请求会触发控制器的无参get方法
ASP.NET WEB API可以根据HTTP方法来选择操作Action,另外还可以通过查询字符串参数来进行选择,然后进行参数绑定
添加新控制器
右击Controllers文件夹->添加->控制器
这里选择一个空的控制器,点添加按钮
给控制器添加一个名字
添加的控制器还是继承ApiController类,给选择器添加一个方法
Get到数据