webapi 学习1

创建mvc4,添加api 控制器

Nuget管理包添加web api 2.2

然后程序管理控制台输入命令Install-Package Microsoft.AspNet.WebApi  更新安装包

添加api控制器,例子:

 1     [RoutePrefix("api")]
 2     public class ReservationController : ApiController
 3     {
 4         IReservationRepository repo = ReservationRepository.getRepository();
 5       //   [Route("Reservation")]
 6         [HttpGet]
 7         public IHttpActionResult GetAllReservations()
 8         {
 9             return Ok(ReturnJsonResult.GetJsonResult(1, "", repo.GetAll()));
10           
11 
12         }
13        // [Route("Reservation/get")]
14         [HttpGet]
15         public IHttpActionResult Get1()
16         {
17             return Ok(ReturnJsonResult.GetJsonResult(1, "", repo.GetAll()));
18       
19 
20         }
21    
22     }
View Code

这里的IHttpActionResult,是一种api Action的应答,常有返回一个对象,转为HttpResponseMessage,另一种手动创建HttpResponseMessage,还有就是本人用到的IHttpActionResult。

允许,输入地址http://localhost:52696/api/Reservation/GetAllReservations,会报错<ExceptionMessage>找到了与该请求匹配的多个操作,

这是webapi路由配置问题,到WebApiConfig

把 routeTemplate: "api/{controller}/{id}",改为 routeTemplate: "api/{controller}/{action}/{id}",即可,由此可看出

  • 通过在路由模板中增加action目录,对资源的定位直接作用到action上。
  • 多个HttpGet方法可以共存于一个controller中。
  • 基于上面两点结论,通过修改路由模板可以满足针对一种资源一种请求方式的多种操作

再次运行,,成功。

原文地址:https://www.cnblogs.com/wuyiran/p/6122046.html