这是新的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
转载时请带上源地址,请尊重原博主的知识产权。