.net api接口工程 - 工厂

前言

最近需要给客户端提供一些接口。处理一些业务,比如请求服务器配置,或者根据平台请求一些平台相关的信息等等

需要提供一些接口给客户端请求。但又想让接口这边灵活一点。所以写了个小玩意。

效果

2

Action参数为接口名,后面的为参数。

完整url为

http://localhost:60595/api.ashx?Action=Test&code=123&Token=456&sign=1faa9679e9616a64bca657f246f0126f

sign签名为?号之后&sign之前的所有参数+密钥 组成

这样能保证请求的安全性以及方便性。

使用说明

先看下项目结构

3

 

如下就是一个入口地址

/// <summary>
    /// api
    /// </summary>
    public class api : BaseHttpHandler
    {
        protected override void OnRequest(HttpContext context, ResponseBody body)
        {
            var watch = Stopwatch.StartNew();
            string param;
            if (CheckSign(context.Request, out param))
            {
                HandlerData handlerData;
                if (TryUrlQueryParse(param, out handlerData))
                {
                    body.Action = handlerData.Name;
                    var data = HandlerManager.Excute(handlerData);
                    if (data == null)
                    {
                        body.StateCode = StateCode.Error;
                        body.StateDescription = StateDescription.NoHandler;
                    }
                    else
                    {
                        body.Data = data;
                        body.StateCode = StateCode.Succeed;
                        body.StateDescription = StateDescription.Succeed;
                    }
                }
                else
                {
                    body.StateCode = StateCode.NoHandler;
                    body.StateDescription = StateDescription.NoHandler;
                }
            }
            else
            {
                body.StateCode = StateCode.SignError;
                body.StateDescription = StateDescription.SignError;//"Sign error.";
            }
        }
        
    }

 

Handler写法

using DataStatistics.Base;
using DataStatistics.Handler.ReqData;
using DataStatistics.Handler.ResData;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace DataStatistics.Handler
{
    public class Test : IHandler<TestInfo>
    {
        public ResponseData Excute(TestInfo data)
        {
            var returnData = new TestReturnInfo()
            {
                code = data.code,
                Token = data.Token
            };
            returnData.list = new List<ResData.TestData>();
            for (int i = 0;i < 5;i++)
            {
                ResData.TestData d = new ResData.TestData();
                d.t1 = "测试数据" + i.ToString();
                d.t2 = "数据测试" + i.ToString();
                returnData.list.Add(d);
            }
            return returnData;
        }
    }
}

如上实现Ihandler接口,定义下请求的数据类和返回的数据类。这样即可简单便捷的写出一写API接口来了。不需要反复的去维护太多的

 

工程下载地址

 链接:http://pan.baidu.com/s/1nuPkF6T 密码:zmh1

项目工程以及调试工具工程

 

本文链接:

https://www.bobsong.net/1150.html
1 + 9 =
快来做第一个评论的人吧~