CSFramework.WebApi开发框架模拟Web用户端登录、调用WebApi接口增删改查数据
CSFramework.WebApi开发框架模拟Web用户端登录、调用WebApi接口增删改查数据
扫一扫加微信
本文简介
Web前端(如Web站点、门户网站、论坛等)调用后端WebApi服务接口,必须把Token作为重要参数传入WebApi接口,WebApi后端服务器验证Token有效性确保系统安全。因此,实现前后端接口数据交互,用户必须先登录系统获取用户令牌(Token),然后调用后端WebApi服务。
CSFramework.WebApi开发框架集成完整的Token机制解决方案,为用户提供成熟、稳定、快速开发的后端服务基础开发平台,快速搭建APP、B/S、C/S、微信小程序、公众号、Web站点等后端应用服务程序。
本文将讲解前端模拟Web用户端登录、调用WebApi接口增、删、改、查数据操作。
Console测试结果
Console测试程序
C# Code:
static void Main(string[] args)
{
string result = "";
Console.WriteLine("##########################################");
Console.WriteLine("模拟Web用户端登录、调用WebApi业务接口增删改查数据");
Console.WriteLine("www.csframework.com | C/S框架网");
Console.WriteLine("##########################################");
Console.WriteLine("");
//模拟Web用户端登录
ModelUser userToken = TestWebLogin.Test();
Console.WriteLine("登录成功,Token:" + userToken.Token);
Console.WriteLine("");
Console.WriteLine("");
Console.WriteLine("测试新增客户信息");
Entity_Customer customer = TestWeb_Customer.Add(userToken, ref result);
Console.WriteLine(result);
Console.WriteLine("");
Console.WriteLine("测试修改客户信息");
Console.WriteLine(TestWeb_Customer.Edit(userToken, customer));
Console.WriteLine("测试获取客户的详情信息");
Console.WriteLine(TestWeb_Customer.View(userToken, customer.CustomerCode));
Console.WriteLine("");
Console.WriteLine("测试删除客户信息");
Console.WriteLine(TestWeb_Customer.Delete(userToken, customer.CustomerCode));
Console.ReadLine();
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
{
string result = "";
Console.WriteLine("##########################################");
Console.WriteLine("模拟Web用户端登录、调用WebApi业务接口增删改查数据");
Console.WriteLine("www.csframework.com | C/S框架网");
Console.WriteLine("##########################################");
Console.WriteLine("");
//模拟Web用户端登录
ModelUser userToken = TestWebLogin.Test();
Console.WriteLine("登录成功,Token:" + userToken.Token);
Console.WriteLine("");
Console.WriteLine("");
Console.WriteLine("测试新增客户信息");
Entity_Customer customer = TestWeb_Customer.Add(userToken, ref result);
Console.WriteLine(result);
Console.WriteLine("");
Console.WriteLine("测试修改客户信息");
Console.WriteLine(TestWeb_Customer.Edit(userToken, customer));
Console.WriteLine("测试获取客户的详情信息");
Console.WriteLine(TestWeb_Customer.View(userToken, customer.CustomerCode));
Console.WriteLine("");
Console.WriteLine("测试删除客户信息");
Console.WriteLine(TestWeb_Customer.Delete(userToken, customer.CustomerCode));
Console.ReadLine();
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
模拟用户登录
C# Code:
/// <summary>
/// 模拟Web端登录
/// </summary>
/// <returns></returns>
public static ModelUser Test()
{
string url1 = "http://localhost:19893/api/gate/loginweb";
//登录请求对象
ModelRequestLogin4Web requestToken = new ModelRequestLogin4Web
{
ApiKey = PrivateData.API_KEY,
UserID = "1388888888",
Password = "cf79ae6addba60ad018347359bd144d2",
Timestamp = DateTime.Now.ToString("yyyyMMddHHmmssfff"),
};
string json2 = JsonConvert.SerializeObject(requestToken);
//POST
string result3 = WebApiTools.Post(url1, json2);
ModelResponse response1 = JsonConvert.DeserializeObject<ModelResponse>(result3);
if (response1.DataIsEncrypted)
{
response1.Data = System.Web.HttpUtility.UrlDecode(response1.Data);
response1.Data = CryptoHelper.DESDecrypt(response1.Data, PrivateData.DES_Key, PrivateData.DES_iv);
}
//返回的用户令牌数据
ModelUser user = JsonConvert.DeserializeObject<ModelUser>(response1.Data);
return user;
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
/// 模拟Web端登录
/// </summary>
/// <returns></returns>
public static ModelUser Test()
{
string url1 = "http://localhost:19893/api/gate/loginweb";
//登录请求对象
ModelRequestLogin4Web requestToken = new ModelRequestLogin4Web
{
ApiKey = PrivateData.API_KEY,
UserID = "1388888888",
Password = "cf79ae6addba60ad018347359bd144d2",
Timestamp = DateTime.Now.ToString("yyyyMMddHHmmssfff"),
};
string json2 = JsonConvert.SerializeObject(requestToken);
//POST
string result3 = WebApiTools.Post(url1, json2);
ModelResponse response1 = JsonConvert.DeserializeObject<ModelResponse>(result3);
if (response1.DataIsEncrypted)
{
response1.Data = System.Web.HttpUtility.UrlDecode(response1.Data);
response1.Data = CryptoHelper.DESDecrypt(response1.Data, PrivateData.DES_Key, PrivateData.DES_iv);
}
//返回的用户令牌数据
ModelUser user = JsonConvert.DeserializeObject<ModelUser>(response1.Data);
return user;
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
ModelUser模型
C# Code:
/// <summary>
/// 用户令牌数据模型
/// </summary>
public class ModelUser
{
/// <summary>
/// 用户编号,或APP系统唯一账号(对应手机号码)
/// </summary>
public string Account { get; set; }
/// <summary>
/// 令牌
/// </summary>
public string Token { get; set; }
/// <summary>
/// 手机号码
/// </summary>
public string Phone { get; set; }
/// <summary>
/// 客户端信息
/// </summary>
public string Client { get; set; }
/// <summary>
/// 版本
/// </summary>
public string Version { get; set; }
/// <summary>
/// 设备编码
/// </summary>
public string MID { get; set; }
/// <summary>
/// 生成Token时间
/// </summary>
public DateTime TS { get; set; }
/// <summary>
/// 过期时间
/// </summary>
public int TokenExpires { get; set; }
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
/// 用户令牌数据模型
/// </summary>
public class ModelUser
{
/// <summary>
/// 用户编号,或APP系统唯一账号(对应手机号码)
/// </summary>
public string Account { get; set; }
/// <summary>
/// 令牌
/// </summary>
public string Token { get; set; }
/// <summary>
/// 手机号码
/// </summary>
public string Phone { get; set; }
/// <summary>
/// 客户端信息
/// </summary>
public string Client { get; set; }
/// <summary>
/// 版本
/// </summary>
public string Version { get; set; }
/// <summary>
/// 设备编码
/// </summary>
public string MID { get; set; }
/// <summary>
/// 生成Token时间
/// </summary>
public DateTime TS { get; set; }
/// <summary>
/// 过期时间
/// </summary>
public int TokenExpires { get; set; }
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
测试【新增-Add】客户信息
C# Code:
internal static Entity_Customer Add(ModelUser userToken, ref string result)
{
//实例化客户对象
Entity_Customer customer = new Entity_Customer
{
CustomerCode = DateTime.Now.ToString("yyyyMMddHHmmss"),
NativeName = "客户名称:珠海市喜鹊信息技术有限公司",
Address1 = "客户地址:珠海市",
};
string url = "http://localhost:19893/api/do/WebClientCall";
//动态令牌方式传入WebApi接口的参数模型
ModelRequestToken M = new ModelRequestToken
{
Timestamp = DateTime.Now.ToString("yyyyMMddHHmmss"),//时间戳
Action = 820000,
Operation = "Add",//操作指令, Add=新增
Token = userToken.Token,//令牌
UserID = userToken.Account,//用户账号
Data = JsonConvert.SerializeObject(customer),//客户实体对象,转JOSN格式
};
//请求转换为JSON
string json = JsonConvert.SerializeObject(M, JsonSettings.Current);
result = WebApiTools.Post(url, json);
return customer;
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
{
//实例化客户对象
Entity_Customer customer = new Entity_Customer
{
CustomerCode = DateTime.Now.ToString("yyyyMMddHHmmss"),
NativeName = "客户名称:珠海市喜鹊信息技术有限公司",
Address1 = "客户地址:珠海市",
};
string url = "http://localhost:19893/api/do/WebClientCall";
//动态令牌方式传入WebApi接口的参数模型
ModelRequestToken M = new ModelRequestToken
{
Timestamp = DateTime.Now.ToString("yyyyMMddHHmmss"),//时间戳
Action = 820000,
Operation = "Add",//操作指令, Add=新增
Token = userToken.Token,//令牌
UserID = userToken.Account,//用户账号
Data = JsonConvert.SerializeObject(customer),//客户实体对象,转JOSN格式
};
//请求转换为JSON
string json = JsonConvert.SerializeObject(M, JsonSettings.Current);
result = WebApiTools.Post(url, json);
return customer;
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
测试【修改-Edit】客户信息
C# Code:
internal static string Edit(ModelUser userToken, Entity_Customer customer)
{
customer.NativeName = "修改后名称:" + customer.NativeName;
customer.Address1 = "修改后地址:" + customer.Address1;
string url = "http://localhost:19893/api/do/WebClientCall";
//动态令牌方式传入WebApi接口的参数模型
ModelRequestToken M = new ModelRequestToken
{
Timestamp = DateTime.Now.ToString("yyyyMMddHHmmss"),//时间戳
Action = 820000,
Operation = "Edit",//操作指令, Edit=修改
Token = userToken.Token,//令牌
UserID = userToken.Account,//用户账号
Data = JsonConvert.SerializeObject(customer),//客户实体对象,转JOSN格式
};
//请求转换为JSON
string json = JsonConvert.SerializeObject(M, JsonSettings.Current);
string result = WebApiTools.Post(url, json);
return result;
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
{
customer.NativeName = "修改后名称:" + customer.NativeName;
customer.Address1 = "修改后地址:" + customer.Address1;
string url = "http://localhost:19893/api/do/WebClientCall";
//动态令牌方式传入WebApi接口的参数模型
ModelRequestToken M = new ModelRequestToken
{
Timestamp = DateTime.Now.ToString("yyyyMMddHHmmss"),//时间戳
Action = 820000,
Operation = "Edit",//操作指令, Edit=修改
Token = userToken.Token,//令牌
UserID = userToken.Account,//用户账号
Data = JsonConvert.SerializeObject(customer),//客户实体对象,转JOSN格式
};
//请求转换为JSON
string json = JsonConvert.SerializeObject(M, JsonSettings.Current);
string result = WebApiTools.Post(url, json);
return result;
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
测试【查询-View】客户信息
C# Code:
public static string View(ModelUser userToken, string customerCode)
{
string url = "http://localhost:19893/api/do/WebClientCall";
//动态令牌方式传入WebApi接口的参数模型
ModelRequestToken M = new ModelRequestToken
{
Timestamp = DateTime.Now.ToString("yyyyMMddHHmmss"),//时间戳
Action = 820000,
Operation = "View",
Token = userToken.Token,//令牌
UserID = userToken.Account,//用户账号
Data = customerCode//客户编码
};
string json = JsonConvert.SerializeObject(M, JsonSettings.Current);
string result = WebApiTools.Post(url, json);
return result;
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
{
string url = "http://localhost:19893/api/do/WebClientCall";
//动态令牌方式传入WebApi接口的参数模型
ModelRequestToken M = new ModelRequestToken
{
Timestamp = DateTime.Now.ToString("yyyyMMddHHmmss"),//时间戳
Action = 820000,
Operation = "View",
Token = userToken.Token,//令牌
UserID = userToken.Account,//用户账号
Data = customerCode//客户编码
};
string json = JsonConvert.SerializeObject(M, JsonSettings.Current);
string result = WebApiTools.Post(url, json);
return result;
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
测试【删除-Delete】客户信息
C# Code:
internal static string Delete(ModelUser userToken, string customerCode)
{
string url = "http://localhost:19893/api/do/WebClientCall";
//动态令牌方式传入WebApi接口的参数模型
ModelRequestToken M = new ModelRequestToken
{
Timestamp = DateTime.Now.ToString("yyyyMMddHHmmss"),//时间戳
Action = 820000,
Operation = "Delete",//操作指令, Delete=删除
Token = userToken.Token,//令牌
UserID = userToken.Account,//用户账号
Data = customerCode,//客户编码
};
string json = JsonConvert.SerializeObject(M, JsonSettings.Current);
string result = WebApiTools.Post(url, json);
return result;
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
internal static string Delete(ModelUser userToken, string customerCode)
{
string url = "http://localhost:19893/api/do/WebClientCall";
//动态令牌方式传入WebApi接口的参数模型
ModelRequestToken M = new ModelRequestToken
{
Timestamp = DateTime.Now.ToString("yyyyMMddHHmmss"),//时间戳
Action = 820000,
Operation = "Delete",//操作指令, Delete=删除
Token = userToken.Token,//令牌
UserID = userToken.Account,//用户账号
Data = customerCode,//客户编码
};
string json = JsonConvert.SerializeObject(M, JsonSettings.Current);
string result = WebApiTools.Post(url, json);
return result;
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
ASP.NET WebApi快速开发框架|APP后端框架-标准版V1.0
适用开发:快速搭建APP、B/S、C/S、微信小程序、公众号、Web站点等后端应用服务程序。
运行平台:Windows + .NET Framework 4.5
开发工具:Visual Studio 2015+,C#语言
数据库:Microsoft SQLServer 2008R2+(支持多数据库:Oracle/MySql)
运行平台:Windows + .NET Framework 4.5
开发工具:Visual Studio 2015+,C#语言
数据库:Microsoft SQLServer 2008R2+(支持多数据库:Oracle/MySql)
产品介绍
CSFramework.WebApi是服务端快速开发框架(后端框架),借助ASP.NET WebAPI底层架构的强大编程能力,封装成为可复用的以及可定制开发的服务端软件模板,CSFramework.WebApi提供可复用的软件架构和开发包,为用户快速轻松搭建基于HTTP协议、HTTPS协议以及支持多种客户端(如:APP、B/S、C/S、微信公众号、微信小程序等)各种跨平台移动终端的服务端应用程序。
服务端应用开发、后端接口开发是软件项目重要工作环节,服务端注重业务逻辑、数据处理和数据分析、算法等方面的设计和服务,前端主要体现在用户体验、界面操作和数据采集方面。前端软件系统和后端服务架构共同搭建跨平台大型数据管理应用系统。
参考文章:
基于Web前端用户调用CSFramework.WebApi服务端登录登出接口实现
CSFramework.WebApi令牌管理器(Token Provider)实现添加、删除、刷新令牌过期控制
CSFramework.WebApi后端服务器框架:客户端调用WebApi接口方式(签名+Token令牌)
扫一扫加微信
版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
NewDoc C/S框架网