zoukankan      html  css  js  c++  java
  • DNN 7.0的Module中调用WebApi

    1、新建项目。有两种途径:一种是建立普通的类库;另一种是通过VS2012中的模板(http://christoctemplate.codeplex.com/)建立一个正规额Mudule项目。为了讲解方便,我们使用第二种方式。

    image

    2、添加以下6个Dll引用(Dnn网站主目录下的Bin文件夹)

    DotNetNuke.dll
    DotNetNuke.Web.dll
    System.Net.Http.dll
    System.Net.Http.Formatting.dll
    System.Web.Http.dll
    System.Web

    image

    3、新建一文件夹用来存储WebApi相关文件,此处我们命名为“WebApi”,添加路由类“RouteMapper.cs”和测试类“WelcomeController.cs(控制器添加规则也要遵循MVC4.0 WebAPI规则,以Controller结尾)”。注意:添加时,两个均为类文件,而不是(特别是第二个)WebApi类。如下图:

    image

    RouteMapper.cs代码:

    using System;
    using DotNetNuke.Web.Api;
    using System.Web.Http;
    
    namespace Christoc.Modules.DNNModule1.WebApi
    {
        public class RouteMapper : IServiceRouteMapper
        {
            public void RegisterRoutes(IMapRoute mapRouteManager)
            {
                mapRouteManager.MapHttpRoute("DNNModule1", "default", "{controller}/{action}/{name}", new { name = RouteParameter.Optional }, new[] { "Christoc.Modules.DNNModule1.WebApi" });
            }
        }
    }

    其中:mapRouteManager.MapHttpRoute格式为:

    DNNModules1 –>  模块名

    default –> 路由名称,随便起个名字。同MVC中的Web API

    "{controller}/{action}/{name}" –> 控制器,行为,参数。同MVC中的Web API

    new { name = RouteParameter.Optional }, –> name 参数的默认只,可省略。同MVC中的Web API

    new[] { "Christoc.Modules.DNNModule1.WebApi" } –> 控制器所在的命名空间

    WelcomeController.cs代码:

    using System;
    using System.Net;
    using System.Net.Http;
    using System.Web.Http;
    using DotNetNuke.Web.Api;
    
    namespace Christoc.Modules.DNNModule1.WebApi
    {
        /// <summary>
        /// API接口参数数据模型
        /// </summary>
        public class ApiDataContent
        {
            /// <summary>
            /// 自定义数据类型(Json格式)
            /// </summary>
            public object Data { get; set; }
    
            /// <summary>
            /// 用户权限授权码
            /// </summary>
            public string AuthKey { get; set; }
        }
    
        public class WelcomeController : DnnApiController
        {
            [AllowAnonymous]
            [HttpGet]
            public HttpResponseMessage HelloZhangps()
            {
                return Request.CreateResponse(HttpStatusCode.OK, "Hello Zhangps!");
            }
    
            [AllowAnonymous]
            [HttpGet]
            public HttpResponseMessage HelloWorld(string name)
            {
                return Request.CreateResponse(HttpStatusCode.OK, "Hello World!" + name);
            }
    
            [AllowAnonymous]
            [HttpPost]
            public HttpResponseMessage PostWorld(ApiDataContent content)
            {
                return Request.CreateResponse(HttpStatusCode.OK, "Post World!" + content.AuthKey);
            }
        }
    }
    其中:ApiDataContent 为复杂参数

    4、Web API接口调用方法:/DesktopModules/DNNModule1/API/Welcome/PostWorld

    5、示例:

    image

  • 相关阅读:
    STL:set/multiset用法详解
    STL:list用法详解
    STL:deque用法详解
    STL:vector容器用法详解
    Axure RP chrome插件显示已损坏或者无法安装的解决方法
    怎样知道自己机器的出口网关IP(即外部IP)
    [Selenium]怎样验证页面是否有无变化
    [Selenium]刷新页面 Refresh page
    [SoapUI]怎样获取隐藏元素的文本内容Get text of hidden element
    [SoapUI]怎样从应答报文中获取某个字段的值,然后用其改写某个变量
  • 原文地址:https://www.cnblogs.com/zhangpengshou/p/3079319.html
Copyright © 2011-2022 走看看