关于UniversalFrame框架下 WebApi(路由模式,同步异步共同实现)

 这是新的API方式,他和原本的不同,是由路由方式实现的,同时实现了,同步和异步的实现。

API的创建及使用

目前采用重写一般处理程序的方式完成快速开发。
(注明:这里使用的开发工具是 vs 2017 )
以下的写法,请先引用框架,UniversalFrame框架
框架地址:https://blog.csdn.net/qq_33484542/article/details/89840069

创建

新建一个C# Web项目,然后创建一个类,这个很简单,就不再赘述,不懂的请百度。
然后会生成如下:文件

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Test.API
{
    public class TaskApi
    {

    }
}

这个是系统为你生成的,这个时候我们只需要引用框架的命名空间。

using UniversalFrame;

然后将 TaskApi 类名后的继承改为 ApiAshx,这个时候回显示报错,你需要实现抽象类,
如图:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Test.API
{
	public class TaskApi : ApiAshx
    {

        protected override bool Initialize(Ashx ashx)
        {
            return true;
        }

        /// <summary>
        /// 出发事件
        /// </summary>
        /// <returns></returns>
        [Ashx()]
        public OnAshxEvent GetEvent()
        {
            return new OnAshxEvent((i) =>
            {
                switch (i.OnAshx)
                {
                    case OnAshxEventState.OnlyID:
                        Json(new
                        {
                            code = 1001,
                            msg = "重复ID!"
                        });
                        break;
                    case OnAshxEventState.Timeout:
                        Json(new
                        {
                            code = 1002,
                            msg = "请求超时!"
                        });
                        break;
                    case OnAshxEventState.Success:
                        Json(new
                        {
                            code = 200,
                            msg = "请求成功!"
                        });
                        break;
                }
            }, "123456")
            { DelayTime = 10000, IsFlush = false };
        }

        [Ashx(IsSession = AshxSessionState.Close)]
        public void Get()
        {
            Json(new { get = OnAshxEvent.IsStartEvent("123456", "123") });
        }
    }
}

一般接口写法如下:

        /// <summary>
        /// 接口
        /// </summary>
        /// <returns></returns>
        [Ashx(ID = "get123", State = AshxState.Post)]
        public void Get(int pageIndex = 1, int pageSize = 4)
        {
			Json(new {ApiKey});
        }

异步写法如下:

        /// <summary>
        /// 接口
        /// </summary>
        /// <returns></returns>
        [Ashx(ID = "get123", State = AshxState.Post)]
        public async Task Get(int pageIndex = 1, int pageSize = 4)
        {
            await Task.Run(() =>
            {
                Json(new {ApiKey});
            });
        }

等待触发接口写法如下:

        /// <summary>
        /// 出发事件
        /// </summary>
        /// <returns></returns>
        [Ashx()]
        public OnAshxEvent GetEvent()
        {
            return new OnAshxEvent((i) =>
            {
                switch (i.OnAshx)
                {
                    case OnAshxEventState.OnlyID:
                        Json(new
                        {
                            code = 1001,
                            msg = "重复ID!"
                        });
                        break;
                    case OnAshxEventState.Timeout:
                        Json(new
                        {
                            code = 1002,
                            msg = "请求超时!"
                        });
                        break;
                    case OnAshxEventState.Success:
                        Json(new
                        {
                            code = 200,
                            msg = "请求成功!"
                        });
                        break;
                }
            }, "123456")
            { DelayTime = 10000, IsFlush = false };
        }

OnAshxEvent.IsStartEvent("123456", "123") 

触发上面等待接口的,触发方式。

重写接口入口控制写法如下:

		/// <summary>
        /// 提供重写接口访问的入口,可以控制接口的访问,返回true,接口将正常执行。
        /// </summary>
        /// <param name="ex"></param>
        protected override bool Initialize(Ashx ashx)
        {
        	//用来增加类似过滤器的效果,十分方便
        	if (ashx.TryGetValue(out Attribute(自定义) mvc))
            {
            	 Json(new { code = 2001, msg = "用户未登录!" });
                 return false;
			}
            return true;
        }

异常监听方法:

        /// <summary>
        /// 当API发生异常时触发
        /// </summary>
        /// <param name="ex"></param>
        protected override void AshxException(AshxException ex)
        {
            Log.Error("API接口异常", ex, "Log/API/Admin/");//日志打印模块。
            Json(new
            {
                code = 404,
                msg = "系统异常!"
            });
        }

访问方式: Global.asax 找到项目下面的这个文件。
说明截图如下:
打开他

    public class MvcApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            AshxRegistration.RegisterAllAreas("webapi");
            RouteConfig.RegisterRoutes(RouteTable.Routes);
        }
     }

Ashx 对象有着很多的属性,方便接口的有效管理。

调用接口方式,域名+webapi+webapi + Get = http://域名:80/webapi/webapi/Get

如果有,不清楚的,请联系,博主。

相关使用文章

请前往 UniversalFrame框架 有关的其他博客文章

https://blog.csdn.net/qq_33484542/article/category/8917335

联系方式:

QQ:1477863629
(温馨提示:加我好友的请备注来意,谢谢大家的支持。)

在这里插入图片描述
博主欢迎,其他博主转载。转载地址:https://blog.csdn.net/qq_33484542/article/details/89840069

转载时请带上源地址,请尊重原博主的知识产权。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值