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

  • 相关阅读:
    Study Plan The TwentySecond Day
    Study Plan The Nineteenth Day
    Study Plan The TwentySeventh Day
    Study Plan The Twentieth Day
    Study Plan The TwentyFirst Day
    python实现进程的三种方式及其区别
    yum makecache
    JSONPath 表达式的使用
    oracle执行cmd的实现方法
    php daodb插入、更新与删除数据
  • 原文地址:https://www.cnblogs.com/zhangpengshou/p/3079319.html
Copyright © 2011-2022 走看看