zoukankan      html  css  js  c++  java
  • 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 }
                );
            }
        }
    }
    View Code

    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);
            }
        }
    }
    View Code

    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);
            }
        }
    }
    View Code

    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

  • 相关阅读:
    2019.6.1 模拟赛——[ 费用流 ][ 数位DP ][ 计算几何 ]
    LOJ 2721 「NOI2018」屠龙勇士——扩展中国剩余定理
    AGC033 D~F——[ 值放到角标的DP ][ 思路+DP ][ 思路 ]
    LOJ 2719 「NOI2018」冒泡排序——模型转化
    LOJ 3094 「BJOI2019」删数——角标偏移的线段树
    CF 717A Festival Organization——斯特林数+递推求通项+扩域
    LOJ 3090 「BJOI2019」勘破神机——斯特林数+递推式求通项+扩域
    洛谷 4723 【模板】线性递推——常系数线性齐次递推
    bzoj 3924 幻想乡战略游戏 —— 动态点分治
    计算几何整理
  • 原文地址:https://www.cnblogs.com/eye-like/p/9337878.html
Copyright © 2011-2022 走看看