创建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 }
这里的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中。
- 基于上面两点结论,通过修改路由模板可以满足针对一种资源一种请求方式的多种操作
再次运行,,成功。