zoukankan      html  css  js  c++  java
  • ASP.NET MVC同时支持web与webapi模式

    我们在创建 web mvc项目时是不支持web api的接口方式访问的,所以我们需要添加额外的组件来支持实现双模式。

    首先我们需要准备三个web api依赖的组件(目前在.net 4/4.5版本下面测试正常,2.0暂未进行测试,需要自行测试)

    1、Microsoft.AspNet.WebApi.Client.5.2.2

    2、Microsoft.AspNet.WebApi.Core.5.2.2

    3、Microsoft.AspNet.WebApi.WebHost.5.2.2

    web api依赖组件下载地址 https://pan.baidu.com/s/1slJHdVJ

    下载依赖组件后解压至packages目录或其他目录即可,解压完毕后打开编辑器 > 添加引用 > 找到下载的三个依赖dll并引用(其中Microsoft.AspNet.WebApi.Client.5.2.2为System.Net.Http的扩展包,故引用只有两个):

    (如果原来已经引用了System.Web.Http则需要删除原来的引用后重新引用)

    添加完引用后,我们需要在App_Start目录添加一个WebApiConfig的配置文件,用于初始化api访问路由,代码如下:

     1   public static class WebApiConfig  
     2     {  
     3         public static void Register(HttpConfiguration config)  
     4         {  
     5             // Web API 路由  
     6             config.MapHttpAttributeRoutes();  
     7   
     8   
     9             config.Routes.MapHttpRoute(  
    10                 name: "DefaultApi",  
    11                 routeTemplate: "api/{controller}/{id}",  
    12                 defaults: new { id = RouteParameter.Optional }  
    13             );  
    14         }  
    15     }  

    添加完该配置文件后,我们接下来就需要在Global.asax全局文件中注册该配置文件:

     1   /// <summary>
     2         /// 启动应用程序
     3         /// </summary>
     4         protected void Application_Start()
     5         {
     6             AreaRegistration.RegisterAllAreas();
     7             GlobalConfiguration.Configure(WebApiConfig.Register);
     8             FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
     9             RouteConfig.RegisterRoutes(RouteTable.Routes);
    10         }

    (注意:GlobalConfiguration.Configure(WebApiConfig.Register);注册信息必须位于普通RouteConfig之前,不然无法生效。)

    完成以上配置操作后,我们就对webapi的基本运行环境配置完毕了,接下来我们添加一个web api controller:

      [RoutePrefix("api/Notify")]  
        public class NotifyController : ApiController  
        {  
            [Route("Alipay")]  
            public string Alipay()  
            {  
                return "success";  
            }  
        }<span style="white-space:pre;">  </span>  

      [RoutePrefix("api/Notify")] 配置api访问路径 示例:http://domain/api/Notify

        [Route("Alipay")] 配置api访问接口  示例:http://domain/api/Notify/Alipay

    如果需要对某个方法设置访问模式,则可以添加上[HttpPost]或[HttpGet]位于[Route]上方。

  • 相关阅读:
    装箱与拆箱
    java中final的用法
    一次坑爹的Oracle in查询
    Spring-Security-Oauth整合Spring-Security,拦截器
    jvisualvm连接远程Tomcat
    7.Spring-Cloud服务容错保护之Hystrix初探
    8.Spring-Cloud-Hystrix之异常处理
    9.Spring-Cloud-Hystrix之请求缓存(踩坑)
    10.Spring-Cloud-Hystrix之熔断监控Hystrix Dashboard单个应用
    11.Spring-Cloud-Hystrix之熔断监控Turbine
  • 原文地址:https://www.cnblogs.com/apeng/p/13913593.html
Copyright © 2011-2022 走看看