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

  • 相关阅读:
    Java Output流写入包装问题
    SpringBoot项目单元测试不经过过滤器问题
    SpringSecurity集成启动报 In the composition of all global method configuration, no annotation support was actually activated 异常
    JWT jti和kid属性的说明
    Maven 排除依赖
    第五章 基因概念的发现
    第三章 孟德尔遗传的拓展
    第二章 孟德尔遗传
    第一章 引言
    GWAS全基因组关联分析
  • 原文地址:https://www.cnblogs.com/eye-like/p/9337878.html
Copyright © 2011-2022 走看看