CSFramework.WebApi后端框架 - 用户请求类型 (User Request)参数模型
CSFramework.WebApi服务端开发框架
WebApi后台框架
WebApi框架
原创软件@csframework.com
目录
1.1 ModelRequest (标准用户请求模型)
模型说明:
序 | 属 性 | 说 明 |
1 | secretKey | 平台与开发者约定的私钥,不可传参!!! |
2 | apikey | 平台分配给开发者的账号,明文传输,不能为空。 |
3 | data | 提交的数据,JSON/XML或其它文本数据,可以明文或对称加密,不能为空。 |
4 | sign | 数据签名,MD5加密。ToMD5(apikey+data+secretKey),不能为空。 |
5 | encrypt | Data加密(true/false),预设为不加密。若要加密,双方约定以下加密方式。 平台支持的4种对称加密类型: Rijndael、DES、TripleDES、RSA |
客户端示范代码1(C#):
//构建<查询采购订单>的请求命令
ModelRequest mr = new ModelRequest();
mr.ApiKey =”5b7184d1-2482-4b7e-85f4-93d86bf1f46e”;
mr.Data =”{Key:PO999222}”; //JSON数据
mr.Sign = CryptoHelper.ToMD5(mr.ApiKey + mr.Data +”z3d85f4865b7184d1bf1”);//Sign数字签名
mr.DataIsEncrypted = false;
//调用PO控制器的Get接口 (独立控制器以及独立接口)
string url=”http://localhost:9988/api/po/get”;
string response=HttpTools.Get(url, JsonConvert.SerializeObject(mr)); //HTTP-GET
客户端示范代码2(C#):
//构建<查询采购订单>的请求命令
ModelRequest mr = new ModelRequest();
mr.ApiKey =”5b7184d1-2482-4b7e-85f4-93d86bf1f46e”;
mr.Data =”{Key:PO999222}”; //JSON数据
mr.Sign = CryptoHelper.ToMD5(mr.ApiKey + mr.Data +”z3d85f4865b7184d1bf1”);//Sign数字签名
mr.DataIsEncrypted = false;
//调用Do控制器的postop通用接口,路由必须指定接口编号以及操作类型,id=80100,op=query
string url=”http://localhost:9988/api/do/postop/80100/Query”;
string response=HttpTools.Post(url, JsonConvert.SerializeObject(mr)); //HTTP-POST
ModelRequest(C#):
/// <summary>
/// 用户请求统一接口(CS/APP/微信小程序),支持(apikey+data+secret)数据签名
/// </summary>
public class ModelRequest : IUserRequest
{
public ModelRequest()
{
this.Timestamp = "";
this.ApiKey = "";
this.Data = "";
this.Sign = "";
this.DataIsEncrypted = false;
}
/// <summary>
/// 时间戳,格式:yyyyMMddHHmmssfff,最小单位:毫秒
/// </summary>
[JsonProperty("ts")]
public string Timestamp { get; set; }
/// <summary>
/// 明文传输key,合作方身份发布给开发者
/// </summary>
[JsonProperty("apikey")]
public string ApiKey { get; set; }
/// <summary>
/// 本次操作的数据(JSON或字符串)
/// </summary>
[JsonProperty("data")]
public string Data { get; set; }
/// <summary>
/// 数字签名,预设MD5加密=[api_key + data + api_secret(私钥,不传参)+ts时间戳]
/// </summary>
[JsonProperty("sign")]
public string Sign { get; set; }
/// <summary>
/// 数据包是否加密
/// </summary>
[JsonProperty("encrypt")]
public bool DataIsEncrypted { get; set; }
}
1.2 ModelRequestAction (命令操作请求模型)
模型说明:
序 | 属 性 | 说 明 |
1 | secretKey | 平台与开发者约定的私钥,不可传参!!! |
2 | apikey | 平台分配给开发者的账号,明文传输,不能为空。 |
3 | data | 提交的数据,JSON/XML或其它文本数据,可以明文或对称加密,不能为空。 |
4 | sign | 数据签名,MD5加密。ToMD5(apikey+data+secretKey),不能为空。 |
5 | act | 接口编号,全称Action,传值参考:800003,不能为空。 |
6 | op | 操作名称,全称Operation,传值参考:Add, Delete,Edit,Query或其它自定义名称,不能为空。 |
7 | encrypt | Data加密(true/false),预设为不加密。若要加密,双方约定以下加密方式。 平台支持的4种对称加密类型: Rijndael、DES、TripleDES、RSA |
8 | cdata | 客户端信息,全称ClientData,JSON格式或其它文本数据,允许为空。 |
客户端示范代码(C#):
//构建用户登录信息
ModelRequestClientData client = new ModelRequestClientData();
client.UserID = “admin”;
client.Token = “7e4c23c0aab0”;
//构建<删除采购订单>的请求命令
ModelRequestAction mr = new ModelRequestAction();
mr.Action = “80100”; //命令编号
mr.Operation = “Delete”;
mr.ApiKey =”5b7184d1-2482-4b7e-85f4-93d86bf1f46e”;
mr.Data =”{Key:PO999222}”; //JSON数据
mr.Sign = CryptoHelper.ToMD5(mr.ApiKey + mr.Data +”z3d85f4865b7184d1bf1”);//Sign数字签名
mr.DataIsEncrypted = false;
mr.ClientData = JsonConvert.SerializeObject(client);
//调用WebApi通用接口
string url=”http://localhost:9988/api/do/post”;
string response=HttpTools.Post(url, JsonConvert.SerializeObject(mr)); //HTTP-POST
ModelRequestAction(C#):
/// <summary>
/// 用户请求统一接口(用户端:CS/APP/微信小程序),支持(apikey+data+secret)数据签名
/// </summary>
public class ModelRequestAction : IUserRequestAction
{
public ModelRequestAction()
{
this.Timestamp = "";
this.Action = 0;
this.Operation = "";
this.ApiKey = "";
this.Data = "";
this.DataIsEncrypted = false;
this.Sign = "";
this.ClientData = "";
}
public ModelRequestAction(IUserRequest request)
{
this.Timestamp = request.Timestamp;
this.ApiKey = request.ApiKey;
this.Data = request.Data;
this.Sign = request.Sign;
this.DataIsEncrypted = request.DataIsEncrypted;
}
/// <summary>
/// 时间戳,格式:yyyyMMddHHmmssfff,最小单位:毫秒
/// </summary>
[JsonProperty("ts")]
public string Timestamp { get; set; }
/// <summary>
/// 执行的动作, 如:10901=客户管理, 10902=员工管理
/// </summary>
[JsonProperty("act")]
public int Action { get; set; }
/// <summary>
/// 具体操作
/// </summary>
[JsonProperty("op")]
public string Operation { get; set; }
/// <summary>
/// 明文传输key,合作方身份发布给开发者
/// </summary>
[JsonProperty("apikey")]
public string ApiKey { get; set; }
/// <summary>
/// 数据包(任何数据)
/// </summary>
[JsonProperty("data")]
public string Data { get; set; }
/// <summary>
/// 客户端信息(比如登录信息,令牌,)
/// </summary>
[JsonProperty("cdata")]
public string ClientData { get; set; }
/// <summary>
/// 数据包是否加密
/// </summary>
[JsonProperty("encrypt")]
public bool DataIsEncrypted { get; set; }
/// <summary>
/// 数字签名,MD5=[api_key + data + api_secret(私钥,不传参)]
/// </summary>
[JsonProperty("sign")]
public string Sign { get; set; }
}
1.3 ModelRequestToken (用户请求+令牌模型)
用户请求统一接口
用户端:Web端,采用Token调用接口方式
/// <summary>
/// 用户请求统一接口(用户端:Web端,采用Token调用接口方式)
/// </summary>
public class ModelRequestToken : IUserRequestToken
{
public ModelRequestToken()
{
this.Timestamp = "";
this.Data = "";
this.UserID = "";
this.Token = "";
this.Operation = "";
this.Action = 0;
}
/// <summary>
/// 时间戳,格式:yyyyMMddHHmmssfff,最小单位:毫秒
/// </summary>
[JsonProperty("ts")]
public string Timestamp { get; set; }
/// <summary>
/// 接口编号
/// </summary>
[JsonProperty("act")]
public int Action { get; set; }
/// <summary>
/// 操作
/// </summary>
[JsonProperty("op")]
public string Operation { get; set; }
/// <summary>
/// 本次操作的数据(JSON或字符串)
/// </summary>
[JsonProperty("data")]
public string Data { get; set; }
/// <summary>
/// 令牌
/// </summary>
[JsonProperty("token")]
public string Token { get; set; }
/// <summary>
/// 当前用户
/// </summary>
[JsonProperty("userid")]
public string UserID { get; set; }
/// <summary>
/// 客户端信息(比如登录信息,令牌,)
/// </summary>
[JsonProperty("cdata")]
public string ClientData { get; set; }
}
1.4 ModelResponse(标准响应类型)
返回客户端的处理结果信息
/// <summary>
/// 返回客户端的处理结果信息
/// </summary>
public class ModelResponse : IUserResponse
{
public ModelResponse()
{
this.Code = 0;
this.Message = "";
this.Data = "";
}
/// <summary>
/// 信息编号
/// </summary>
[JsonProperty("code")]
public int Code { get; set; }
/// <summary>
/// 返回信息
/// </summary>
[JsonProperty("msg")]
public string Message { get; set; }
/// <summary>
/// 返回的数据包
/// </summary>
[JsonProperty("data")]
public string Data { get; set; }
/// <summary>
/// 数据包是否加密
/// </summary>
[JsonProperty("encrypt")]
public bool DataIsEncrypted { get; set; }
}
1.5 更多请求模型