webapi-1 给现有MVC 项目添加 WebAPI
1. 增加一个WebApi Controller, VS 会自动添加相关的引用,主要有System.Web.Http,System.Web.Http.WebHost,System.Net.Http
2. 在App_Start 下创建 WebApiConfig.cs 并注册路由
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Web.Http; namespace Libaray.Web.App_Start { public static class WebApiConfig { public static void Register(HttpConfiguration config) { // Web API 配置和服务 // Web API 路由 config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); } } }
3. 在Global.asax, Application_Start 下添加 WebAPI 配置
using Libaray.Web.App_Start; using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Http; using System.Web.Mvc; using System.Web.Optimization; using System.Web.Routing; namespace Libaray.Web { public class MvcApplication : System.Web.HttpApplication { protected void Application_Start() { AreaRegistration.RegisterAllAreas(); GlobalConfiguration.Configure(WebApiConfig.Register); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); } } }
4. 在第一步添加的WebApi 中填写相应代码,
using Libaray.Web.Models; using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Http; using System.Web.Http; namespace Libaray.Web.Controllers { [RoutePrefix("api/SystemUsers")] public class SystemUsersController : ApiController { [HttpGet, Route("GetUserList")] public List<UserModel> GetUserModels() { UserModelService UserBS = new UserModelService(); return UserBS.FindList(u => u.isActive == true); } [HttpGet, Route("GetUser")] public UserModel GetUserModel(int id = 0) { if(id != 0) { UserModelService UserBS = new UserModelService(); return UserBS.Find(u => u.Id == id); } else { return null; } } [HttpPost, Route("Login")] public bool Login(string loginId,string password) { UserModelService UserBS = new UserModelService(); return UserBS.ValidateLoginInfo(loginId, password); } } }
5. Run the application and call the API. Example: http://localhost:49919/api/SystemUsers/GetUserList
6. 一些疑问
做完以上配置后,运行网页,仍不能得到想要的结果,后查出因为我是在Areas里面建立了一个API的文件夹
只要将View文件夹和APIAreaRegistration.cs文件删除,问题就消失了,具体原因没有细究,应该还是路由的问题。
引用:
https://www.cnblogs.com/tuyile006/p/6151555.html